Рутина для изменения прокси не работает на delphi 10.2 Tokyo

означает, что LongAdder агрегирует значения внутри и обновляет их позже?

blockquote>

Да, если я правильно понимаю ваше утверждение.

Каждый Cell в LongAdder является вариантом AtomicLong. Наличие нескольких таких ячеек является способом распространения конкуренции и, следовательно, увеличения пропускной способности.

Когда конечный результат (сумма) должен быть восстановлен, он просто добавляет вместе значения каждой ячейки.

Большая часть логики вокруг того, как организованы ячейки, как они выделены и т. д., можно увидеть в источнике: http://hg.openjdk.java.net/jdk9/jdk9/jdk/file/f398670f3da7 /src/java.base/share/classes/java/util/concurrent/atomic/Striped64.java

В частности, количество ячеек связано числом процессоров:

/** Number of CPUS, to place bound on table size */
static final int NCPU = Runtime.getRuntime().availableProcessors();
1
задан LU RD 13 July 2018 в 20:30
поделиться

2 ответа

Как было предложено LU-RD , я сменил подпрограмму и начал работать с обновлением tokio 10.2 3.

function ApplyProxy(proxy: string):Boolean;
var
  MyInternetProxyInfo: PInternetProxyInfo;
begin
 try
  Result:=False;
  proxy:=Trim(proxy);
  MyInternetProxyInfo:=New(PInternetProxyInfo);
  try
    if proxy = EmptyStr then
      MyInternetProxyInfo^.dwAccessType := INTERNET_OPEN_TYPE_DIRECT else
    begin
      MyInternetProxyInfo^.dwAccessType := INTERNET_OPEN_TYPE_PROXY;
      MyInternetProxyInfo^.lpszProxy := PAnsiChar(AnsiString(Trim(proxy)));
      MyInternetProxyInfo^.lpszProxyBypass := PAnsiChar('<local>');
    end;
    Result:=InternetSetOption(nil, INTERNET_OPTION_PROXY, MyInternetProxyInfo, SizeOf(MyInternetProxyInfo^));
  finally
    Dispose(MyInternetProxyInfo);
  end;
 except
  Result:=False;
 end;
end;
1
ответ дан Ken White 17 August 2018 в 12:10
поделиться
  • 1
    Обратите внимание, что это провалится, если адрес прокси-сервера содержит символ Unicode (не будет найден IP-адрес с прокси-адреса). Было бы лучше использовать вызовы API xxxW () вместо xxxA (), которые не нуждались бы в преобразованиях типов, а также не прерывать символы Unicode в адресе. – Brian 17 July 2018 в 20:45

В Delphi 10.2 Токио-строки являются unicode, и компилятор предупредит, что

PAnsiChar(Trim(proxy)); 

is

W1044 Подозрительный тип вывода строки в PAnsiChar.

, и это не будет работать при выполнении. Сначала преобразуйте строку в AnsiString.

Например:

MyInternetProxyInfo^.lpszProxy := PAnsiChar(AnsiString(Trim(proxy)));
2
ответ дан LU RD 17 August 2018 в 12:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: