himitsu stellt
hier eine Funktion vor, mit der man eine IPv4-Adresse auf Gültigkeit überprüfen kann. Diese wurde von
alzaimar leicht korrigiert und optimiert.
Delphi-Quellcode:
//Array als Lookup-Tabelle für gültige Ziffern.
var
IsDigit : Array [Char] Of Boolean;
//Hilfsfunktion
//Muss einmal vor Aufruf von isIP aufgerufen werden, um eine LookUp-Tabelle zu erstellen.
procedure InitIsDigit;
var
C : char;
begin
For C:= #0 to #255 do IsDigit[C] := C in ['0'..'9'];
end;
Delphi-Quellcode:
function isIpv4(const aIpString: string): Boolean;
var
pIpString: PChar;
OctetSum, Octet, OctetLength, OctetCount: Integer;
begin
Result := False;
pIpString := PChar(aIpString);
OctetCount := 0;
OctetSum := 0;
while pIpString^ <> #0 do
begin
Inc(OctetCount);
Octet := 0;
OctetLength := 0;
while IsDigit[pIpString^] do
begin
Octet := Octet * 10 + (Ord(pIpString^) - Ord('0'));
Inc(OctetLength);
Inc(pIpString);
end;
inc(OctetSum, Octet);
if (OctetLength = 0) or (Octet > 255) then
Exit;
if OctetCount = 4 then
Break;
if pIpString^ <> '.' then
Exit;
Inc(pIpString);
end;
Result := (OctetSum > 0) and (OctetCount = 4) and (pIpString^ = #0);
end;