Archiv verlassen und diese Seite im Standarddesign anzeigen : Adresse in String umwandeln
mcbrunox
10.09.2002, 19:10
Da ich ja noch ein Newbie bin und noch nicht einmal im Besitz eines Delphi Buches, habe ich wieder mal ne blöde Frage.
Und zwar wie kann ich die Adressen unten in einen String umwandeln ?
function LookupName(const Name: string): TInAddr;
var
HostEnt: PHostEnt;
InAddr: TInAddr;
begin
HostEnt := gethostbyname(PChar(Name));
FillChar(InAddr, SizeOf(InAddr), 0);
if HostEnt <> nil then
begin
with InAddr, HostEnt^ do
begin
S_un_b.s_b1 := h_addr^[0]; //Diese 4 Adressen meine Ich
S_un_b.s_b2 := h_addr^[1];
S_un_b.s_b3 := h_addr^[2];
S_un_b.s_b4 := h_addr^[3];
end;
end;
Result := InAddr;
end;
Patrik Graf
11.09.2002, 00:05
So wie ich das sehe, willst du die IP-Adresse eines Hostnamen rausfinden und die dann als String zurückgeben...
Probiers mal damit: :D
function GimmeIP(sHost: String): String;
type TaPInAddr = Array[0..10] of PInAddr;
PaPInAddr = ^TaPInAddr;
Var phe: PHostEnt;
pptr: PaPInAddr;
Buffer: Array[0..63] of Char;
i: Integer;
GInitData: TWSAData;
begin
WSAStartup($101, GInitData); Result := '';
For i := 1 To Length(sHost) Do Buffer[i-1] := sHost[i];
phe := GetHostByName(buffer); i := 0;
If phe = nil Then Exit; pPtr := PaPInAddr(phe^.h_addr_list);
While pPtr^[I] <> nil Do begin
Result := inet_ntoa(pptr^[I]^); Inc(I);
end;
WSACleanup;
end;
mcbrunox
11.09.2002, 11:23
@Patrik und wie muss das Format des HostnamenStrings sein ?
ich habs mit '\\NAME' und mit 'NAME' probiert...kommt aber keine IP.
Gibt es noch ein anderes Format ?
Patrik Graf
11.09.2002, 11:31
Einfach der Name, mehr braucht man nicht übergeben. Bei mir hat´s bis jetzt immer funktioniert... :D
mcbrunox
11.09.2002, 11:31
Also so wie es aussieht its phe immer nil und hätte damit eine Zugriffsverletzung würde ich diese Zeile weglassen.
If phe = nil Then Exit;
Meine Frage nun Wieso ? Liegt es am System...
Patrik Graf
11.09.2002, 11:50
procedure TForm1.Button1Click(Sender: TObject);
Var IPString: String;
begin
IPString := GimmeIP('DerRechner');
Edit1.Text := IPString;
end;
Mehr braucht man nicht...
mcbrunox
11.09.2002, 12:02
So gehts jetzt:
//CODE 2
procedure TForm1.Button1Click(Sender: TObject);
Var IPString: String;
s:string;
begin
EnumNetResources(Listbox1.items);
s:=listbox1.Items[0];delete(s,1,2);
edit1.text:=s;:mauer:
IPString := GimmeIP(s);
Edit1.Text := IPString;
end;
Danke
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.