ich hab in meinem Projekt die
IP wie folgt ermittelt:
Delphi-Quellcode:
function TClassName.GetIpAddress(): string;
var phoste: PHostEnt;
Hostname: array [0..100] of char;
begin
GetHostName(Hostname,Sizeof(Hostname));
phoste:=GetHostByName(Hostname);
if phoste = nil then result:='127.0.0.1'
else result:=String(inet_ntoa(PInAddr(phoste^.h_addr_list^)^));
end;
Wenn du im Netz bist bekommst du aber damit die richtige
IP wenn diese in der Liste vorn steht. Du musst also in der Liste die
ip's durchgehen.
[Edit]
Und hier nochmal die Funktion so überarbeitet das sie Standalone funktioniert und alle
IP's auflistet
Delphi-Quellcode:
function GetIpAddress(): string;
var phoste: PHostEnt;
Hostname: array [0..100] of char;
LData : WSAData;
LCount : Integer;
LPtr : PInAddr;
begin
WSAStartup(MakeWord(2, 0), LData);
if GetHostName(Hostname,Sizeof(Hostname)) = 0 then
begin
phoste:=GetHostByName(Hostname);
if phoste = nil then
result:='127.0.0.1'
else begin
result := '';
for LCount := 0 to phoste.h_length - 1 do
begin
LPtr := PInAddr(Pointer(Cardinal(phoste^.h_addr_list) + Cardinal(LCount) * SizeOf(TInAddr))^);
if Assigned(LPtr) then
result := result + StrPas(inet_ntoa(LPtr^)) + '|';
end;
end;
end else
result := IntToStr(WSAGetLastError);
end;
Wenn du also online bist müsstest du in der Schleife die Lan-
IP's filtern. Und wenn du mehrere Lan-
IP's hast musst du dir überlegen welche du haben willst...