Показать сообщение отдельно
  #11  
Старый 05.08.2009, 20:35
Inqizitor Inqizitor вне форума
Прохожий
 
Регистрация: 04.08.2009
Сообщения: 8
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
Ну выводит другой адрес. Тот, который я указал в настройках...
Посмотри по справке функции конвертирования. StrPas переводит PChar в AnsiString. Найди функцию с правильным целевым типом. Или попробуй конвертнуть сначала в AnsiString, а потом уже ее присвоить Edit'у.
Вот решил проблему - код рабочий:
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, wininet, StdCtrls;

type
  INTERNETPROXYINFO = record
    dwAccessType: DWORD;
    lpszProxy: PAnsiChar;
    lpszProxyBypass: PAnsiChar;
  end;

  PInetProxyInfo = ^INTERNETPROXYINFO;

  TForm1 = class(TForm)
    Edit1: TEdit;
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}
procedure GetProxyData(var ProxyEnabled: boolean; var ProxyServer: ansistring; var ProxyPort: integer);
var
  ProxyInfo: PInetProxyInfo;
  Len: LongWord;
  i, j: integer;
begin
  Len := 4096;
  ProxyEnabled := false;
  GetMem(ProxyInfo, Len);
  try
    if InternetQueryOptionA(nil, INTERNET_OPTION_PROXY, ProxyInfo, Len)
    then
      if ProxyInfo^.dwAccessType = INTERNET_OPEN_TYPE_PROXY then
      begin
        ProxyEnabled:= True;
        ProxyServer := ProxyInfo^.lpszProxy;
        //showmessage('!');
      end
  finally
    FreeMem(ProxyInfo);
  end;

  if ProxyEnabled and (ProxyServer <> '') then
  begin
    i := Pos('http=', ProxyServer);
    if (i > 0) then
    begin
      Delete(ProxyServer, 1, i+5);
      j := Pos(';', ProxyServer);
      if (j > 0) then
        ProxyServer := Copy(ProxyServer, 1, j-1);
    end;
    i := Pos(':', ProxyServer);
    if (i > 0) then
    begin
      ProxyPort := StrToIntDef(Copy(ProxyServer, i+1, Length(ProxyServer)-i), 0);
      ProxyServer := Copy(ProxyServer, 1, i-1)
    end
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
pren: boolean;
s: ansistring;
p: integer;
begin
GetProxyData(pren, s, p);
edit1.Text:=(s+':'+inttostr(p));
end;

end.
Ответить с цитированием