Ich habe hier im Forum eine Funktion gefunden um zu überprüfen ob ein String eine
IP-Adresse ist. Jetzt habe ich versucht eine Funktion zu erstellen die überprüft ob ein String ein Hostname ist.
Hier mal der Quellcode für die beiden Funktionen. Die Funktion
IsValidIP habe ich wie bereits erwähnt so hier im Forum gefunden, während ich die Funktion
IsValidHostname aus einer Funktion zur Ermittlung der
IP aus einem gegebenen Hostnamen (auch hier aus dem Forum) und der bereits genannten Funktion IsValidIP zusammengebastelt habe.
Funktioniert inzwischen auch soweit, aber ich frage mich ob es nicht doch wesentlich einfacher geht.
Delphi-Quellcode:
// Ist der angegebene String wirklich eine IP-Adresse?
function IsValidIP (
const IPAdress :
String) : Boolean;
begin
Result := ((IPAdress <> '
')
and (Inet_Addr(PChar(IPAdress)) <> INADDR_NONE));
end;
// Ist der angegebene String wirklich ein Hostname?
function IsValidHostname(
const Hostname :
String) : Boolean;
var
WSAData: TWSAData;
HostEnt: PHostEnt;
IP: PChar;
begin
Result := False;
if WSAStartUp($101, WSAData) = 0
then
begin
GetMem(
IP, 255 + 1);
StrPCopy(
IP, Hostname);
HostEnt := GetHostByName(
IP);
FreeMem(
IP);
if HostEnt <>
nil then
begin
if IsValidIP(Hostname)
then
begin
Result := False;
end
else
begin
Result := True;
end;
end
else
begin
Result := False;
end;
end;
WSACleanUp;
end;