Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Gateway IP über API auslesen TeilII (https://www.delphipraxis.net/61369-gateway-ip-ueber-api-auslesen-teilii.html)

Ati 20. Jan 2006 14:55


Gateway IP über API auslesen TeilII
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,

ich habe aus einem anderen Beitrag mal eine Codesequenz "geklaut" und diese in meinem Programm eingebaut und so angepaßt das alles in meiner Listbox auftaucht. Jedoch wird bei mir 4x ein Gateway angezeigt aber nur einmal mit einer IP. Jetzt bin ich ehrlich gesagt noch nicht so "Bibelfest" das ich eigenmächtig den Code so anpassen kann, das nur der Eintrag mit der entsprechenden IP angezeigt wird und die leeren eben nicht. Hier mal meine/gefundene Funktion:
Delphi-Quellcode:
procedure GetGateway (const AItems:TStrings);
var
  dwResult    : DWORD;
  dwLen       : DWORD;
  pAdapterWork : PIP_ADAPTER_INFO;
  pAdapterList : PIP_ADAPTER_INFO;
  iasWork     : IP_ADDR_STRING;

begin
  pAdapterList := nil;
  dwLen       := 0;
  dwResult    := GetAdaptersInfo(pAdapterList,@dwLen);
  if dwResult = ERROR_BUFFER_OVERFLOW then
  begin
    pAdapterList := AllocMem(dwLen);
    try
      dwResult := GetAdaptersInfo(pAdapterList,@dwLen);
      if dwResult = ERROR_SUCCESS then
      begin
        pAdapterWork := pAdapterList;
        //cobGateway.Clear;
        repeat
          iasWork := pAdapterWork.GatewayList;
          while iasWork.Next <> nil do
          begin
            AItems.Add('Gateway:  '+trim(iasWork.IpAddress.acString));
            iasWork := iasWork.Next^;
          end;
          AItems.Add('Gateway:             '+trim(iasWork.IpAddress.acString));
          pAdapterWork := pAdapterWork.Next;
        until pAdapterWork = nil;
    end;
    finally
      FreeMem(pAdapterList,dwLen);
    end;
  end;
end;
Im Anhang mal das aktuelle Erscheinungsbild des Programmes. Ich hoffe ihr versteht was ich meine.

Danke
Ati

marabu 20. Jan 2006 17:04

Re: Gateway IP über API auslesen TeilII
 
So funktioniert es bei mir - allerdings bei abweichender Umsetzung der Strukuren aus IPHLPAPI:

Delphi-Quellcode:
var
  s: String;
...
repeat
  iasWork := pAdapterWork.GatewayList;
  while iasWork.Next <> nil do
  begin
    s := Trim(iasWork.IpAddress); // hier anpassen
    if s <> '' then
      AItems.Add('Gateway:  ' + s);
    iasWork := iasWork.Next^;
  end;
  s := Trim(iasWork.IpAddress); // hier anpassen
  if s <> '' then
    AItems.Add('Gateway:  ' + s);
  pAdapterWork := pAdapterWork.Next;
until pAdapterWork = nil;
...
Grüße vom marabu

Ati 20. Jan 2006 17:11

Re: Gateway IP über API auslesen TeilII
 
Danke dir. Werde das morgen mal so ändern und so probieren. Melde mich dann wieder!!!!

Ati

Ati 21. Jan 2006 20:16

Re: Gateway IP über API auslesen TeilII
 
N´abend,

habe das jetzt gerade mal ausprobiert, es scheint aber nicht zu funktionieren. Werde das Montag nochmal in der Firma testen (habe mich gerade von zu Hause aus eingewählt), es erscheint aber immernoch mehrmals "Gateway:" ohne Eintrag.

Ati

marabu 21. Jan 2006 21:59

Re: Gateway IP über API auslesen TeilII
 
Schau dir doch mal den Inhalt von iasWork.IpAddress an - setze einen break point und öffne den inspector - und schon weißt du Bescheid. Ich kann das nicht für dich machen, weil auf meiner Maschine der angepasste Code gar nicht zum Tragen kommt.

marabu

Ati 23. Jan 2006 06:43

Re: Gateway IP über API auslesen TeilII
 
Sorry Marabu hatte vergessen den zweiten Teil der Ausgabe entsprechend zu ändern. Funktioniert jetzt einwandfrei. Danke

Ati


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:40 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz