![]() |
Lokale IP auslesen
Hi,
wie kann ich meine lokale IP auslesen? Das ganze sollte so einfach wie möglich sein. Ich möchte die IP auslesen, und dann weiter verarbeiten um sie dann mit einer fest vorgegebenen zu vergleichen. |
Re: Lokale IP auslesen
|
Re: Lokale IP auslesen
Lokale IP-Adressen ermitteln
Folgende Funktion gibt die lokalen IP-Adressen zurück. Sie erwartet als Parameter eine abgeleitete Klasse von TStrings, wie beispielsweise TMemo.Lines oder TListbox.Items oder auch eine TStringList. Sie gibt True zurück, wenn mindestens eine IP-Adresse ermittelt werden konnte. Sollte der Computer hinter einem Router liegen, wird die echte Internet-Adresse nicht berücksichtigt. Die Unit WinSock muss eingebunden werden.
Delphi-Quellcode:
Aufgerufen werden kann die Funktion z.B. so:
function GetLocalIPs(const Lines:TStrings):Boolean;
type PPInAddr= ^PInAddr; var wsaData: TWSAData; HostInfo: PHostEnt; HostName: Array[0..255] of Char; Addr: PPInAddr; begin Result:=False; Lines.Clear; if WSAStartup($0102, wsaData)=0 then try if gethostname(HostName, SizeOf(HostName)) = 0 then Begin HostInfo:= gethostbyname(HostName); if HostInfo<>nil then Begin Addr:=Pointer(HostInfo^.h_addr_list); if (Addr<>nil) AND (Addr^<>nil) then Repeat Lines.Add(StrPas(inet_ntoa(Addr^^))); inc(Addr); Until Addr^=nil; end; end; Result:=True; finally WSACleanup; end; end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin if not GetLocalIPs(Memo1.Lines) then MessageDLG('Keine IP-Adresse',mtInformation,[mbOK],0); end; |
Re: Lokale IP auslesen
Super, ich danke euch !!!
Werde es wenn icih zuhause bin direkt testen. |
Re: Lokale IP auslesen
Wenn ich den o.g. Quellcode kompiliere, tritt an diesen Zeilen:
Delphi-Quellcode:
Folgender Fehler auf:
if gethostname(HostName, SizeOf(HostName)) = 0 then Begin
HostInfo:= gethostbyname(HostName); [DCC Fehler] Umain.pas(218): E2010 Inkompatible Typen: 'Array' und 'PAnsiChar' [DCC Fehler] Umain.pas(219): E2010 Inkompatible Typen: 'Array' und 'PAnsiChar' und bei:
Delphi-Quellcode:
Lines.Add(StrPas(inet_ntoa(Addr^^)));
[DCC Warnung] Umain.pas(224): W1057 Implizite String-Umwandlung von 'AnsiString' zu 'string' :wiejetzt: |
Re: Lokale IP auslesen
Larsi, dass die Funktion nicht von dir stammt, dürfte hier allen klar sein. Daher gib bitte zukünftig immer deine Copy&Paste-Quellen an!
In deinem Fall ![]() Edit: Huch der Beitrag von Larsi ist auch schon 1 Jahr alt. Naja, das gilt dennoch. Edit 2: @Ajin: Bei mir (TurboDelphi) kompiliert der oben genannte Code von delphi-treff.de (s. meinen Link) ohne Warnungen. |
Re: Lokale IP auslesen
Ich kenne die Implementierung von D2009 nicht, aber hilft es, wenn Du die Variablendeklaration änderst?
Delphi-Quellcode:
HostName: Array[0..255] of AnsiChar;
|
Re: Lokale IP auslesen
Delphi-Quellcode:
Das Ändern der Variablendeklaration half :hello:
HostName: Array[0..255] of AnsiChar;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:49 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