AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi GetProxyInformation unter Delphi 2009
Thema durchsuchen
Ansicht
Themen-Optionen

GetProxyInformation unter Delphi 2009

Ein Thema von GPRSNerd · begonnen am 17. Mär 2009 · letzter Beitrag vom 18. Sep 2009
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#1

GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 13:54
Hi,

bisher habe ich unter Delphi 2007 den Code aus der Codelib zum Auslesen der Proxy-Informationen benutzt.
Unter Delphi 2009 kompiliert das auch ohne Hinweise, Warnungen etc., gibt aber in GetProxyInformation immer nur Leerstrings oder Müll zurück.
Ein Wechsel auf InternetQueryOptionW brachte keine Verbesserung.

Hat irgendjemand damit schon Erfolge bei der Migration nach Delphi 2009 erzielt?

Gruß,
Stefan
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von RWarnecke
RWarnecke

Registriert seit: 31. Dez 2004
Ort: Stuttgart
4.408 Beiträge
 
Delphi XE8 Enterprise
 
#2

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 15:44
Hast Du auch die anderen Typen im Sourcecode angepasst ? String zu WideString u.s.w.
Rolf Warnecke
App4Mission
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 15:49
Und auf InternetQueryOptionW umgestellt?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 15:52
Sorry, my bad.
In ersten Post meinte ich natürlich InternetQueryOptionW und nicht GetProxyInformationW.

In der Kern-Funktion GetProxyInformation ist nicht viel zum Umstellen auf Widestring etc.:
Delphi-Quellcode:
function GetProxyInformation: WideString;
var
  ProxyInfo: PInternetProxyInfo;
  Len: LongWord;
begin
  Result := '';
  Len := 4096;
  GetMem(ProxyInfo, Len);
  try
    if InternetQueryOptionW(nil, INTERNET_OPTION_PROXY, ProxyInfo, Len) then
      if ProxyInfo^.dwAccessType = INTERNET_OPEN_TYPE_PROXY then
      begin
        Result := ProxyInfo^.lpszProxy;
      end;
  finally
    FreeMem(ProxyInfo);
  end;
  //ShowMessage(result);
end;
Der Output mit dem Showmessage am Ende ergibt zig nicht darstellbare Zeichen.
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 16:01
Durch ein Outputdebugstring habe ich mir mal das Result in Ascii und Hex ausgeben lassen:

00000000 16:59:34.932 [4040] ????????????????‰???????????????????????????>
00000001 16:59:34.932 [4040] 3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F893F3F3F3F3F3F3F3F 3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3F3E

Da kommt also wirklich nur Müll zurück, das Ergebnis der InternetQueryOptionW ist aber true.
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 16:11
Unter Delphi 2007 gibt die Widestring-Variante allerdings einen gültigen String aus.
Zitat:
---------------------------
Projecttest
---------------------------
http=10.20.30.40:1024 ftp=20.30.40.50:8080
---------------------------
OK
---------------------------
So habe ich es zum Testen auch im IE eingetragen.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 16:16
Hmmmmm, seltsam.
Ich habe eine ähnliche Proxy-Konfig auf meinem Firmen-Rechner.
Kannst du mir zur Kontrolle mal deine D2007-Exe schicken oder attachen?
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 16:17
Schaut euch mal die Übersetzung in WinInet.pas an:

Delphi-Quellcode:
  INTERNET_PROXY_INFO = record
    dwAccessType: DWORD; { dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or }
    lpszProxy: LPCTSTR; { lpszProxy - proxy server list }
    lpszProxyBypass: LPCTSTR; { lpszProxyBypass - proxy bypass list }
  end;
und in Windows.pas

LPCTSTR = PAnsiChar; Vermutlich ist das der Fehler das die übersetzung des Records nicht korrekt ist und noch auf Ansi steht.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 16:28
Das unter D2007 kompilierte Testprogramm gibt bei mir korrekt den http/Proxy aus: 172.20.10.3:8080, danke Detlef!
Dann kann ich mich also auf D2009 als Quelle des Problems konzentrieren.

Ich definiere mir gerade mal ein paar neue Types für die Widechar-Variante aus der Wininet.pas. Mal sehen, ob das was bringt...
Stefan
  Mit Zitat antworten Zitat
Benutzerbild von GPRSNerd
GPRSNerd

Registriert seit: 30. Dez 2004
Ort: Ruhrpott
239 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: GetProxyInformation unter Delphi 2009

  Alt 17. Mär 2009, 16:37
So, indem ich den Record auf PAnsiChars umstelle funktionierts:

Delphi-Quellcode:
type
  PInternetProxyInfoA = ^INTERNET_PROXY_INFOA;
  INTERNET_PROXY_INFOA = record
    dwAccessType: DWORD; { dwAccessType - INTERNET_OPEN_TYPE_DIRECT, INTERNET_OPEN_TYPE_PROXY, or }
    lpszProxy: PAnsiChar; { lpszProxy - proxy server list }
    lpszProxyBypass: PAnsiChar; { lpszProxyBypass - proxy bypass list }
  end;

function GetProxyInformation: AnsiString;
var
  ProxyInfo: PInternetProxyInfoA;
  Len: DWORD;
begin
  Result := '';
  Len := 4096;
  GetMem(ProxyInfo, Len);
  try
    if InternetQueryOptionW(nil, INTERNET_OPTION_PROXY, ProxyInfo, Len) then
    begin
      if ProxyInfo^.dwAccessType = INTERNET_OPEN_TYPE_PROXY then
      begin
        Result := ProxyInfo^.lpszProxy;
      end;
    end;
  finally
    FreeMem(ProxyInfo);
  end;
end;
Danke an Bernhard und Detlef!
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz