Ebben a cikkben megvalósítunk egy függvényt, mely egy paraméterül kapott IP címről eldönti, hogy az valódi-e vagy sem. A függvény felhasználásával tetszőleges string típusú adatról eldönthető, hogy megfelel-e az IP címekre vonatkozó tartalmi és formai szabályoknak.
A példában egy egyszerű TEdit típusú vezérlőben lehet megadni a vizsgálandó IP címet reprezentáló karakterláncot, amelyet az IsValidIPAddress nevű függvény dolgoz fel. Az IsValidIPAddress függvény a következő jellemzőkkel rendelkezik:

IsValidIPAddress
Function IsValidIPAddress(Value:string):Boolean;
Paraméterek
Value:string
Az IP címet tartalmazó változó.
Visszatérési érték
A függvény helyes IP címet tartalmazó string esetén true értékkel tér vissza, egyébként false.
A függvény a karakterláncot szegmensekre bontja, ezeket egy karakterláncokat tároló listába teszi. A listát a művelet elején létre kell hozni:
IPlist := TStringList.Create;
A karakterlánc vizsgálatakor a legkézenfekvőbb módszer a karakterek egyenkénti feldolgozása. Minden karakterről megállapítható, hogy értéke megfelel-e a kritériumoknak az adott pozícióban. Az egyes vizsgálatok beállítanak egy logikai változót, mely a függvény visszatérési értéke lesz. A karakterlánc elemein végigmenő ciklus a következő vizsgálati feltételeket tartalmazza:
- Az adott karakter része-e az IP címek esetén megengedett karakterek halmazának. A megengedett karakterek: ’.’ karakter, ’0’...’9’ szám karakterek.
. . .
if not (Value[i] in segchar) then
begin
b:=false;
break;
end;
- A karakterlánc első és utolsó eleme nem lehet ’.’ karakter.
if (Value[i]='.') and ((i=1) or (i=Length(Value))) then begin
b:=false; break;
end;
- Ha a formai szempontok érvényesülnek, a karakterlánc elemeit 4 karakterláncra bontjuk és felfűzzük a listára. A művelet végén a lista memóriaterületét felszabadítjuk.
if Value[i]='.' then
begin
IPlist.Add(IPSegment);
IPSegment:='';
end
else
begin
IPSegment:=IPSegment+Value[i];
end;
. . .
IPlist.Add(IPSegment);
s := 0;
if (IPlist.Count <> 4) then b:=false;
for j:=0 to IPlist.Count-1 do
begin
s := StrToInt(IPlist.Strings[j]);
if (s>255) or ((IPlist.Strings[j][1] = '0') and (Length(IPlist.Strings[j]) > 1)) then
begin
b:=false;
break;
end;
end;
IPlist.Free;
A függvény az alkalmazásban a Form-on található gomb megnyomásakor hajtódik végre.