校验IP地址的合法性

字体大小: 中小 标准 ->行高大小: 标准
function IsWrongIP(ip: string): Boolean;

var

z, i: byte;

st: array[1..3] of byte;

const

ziff = ['0'..'9'];

begin

st[1] := 0;

st[2] := 0;

st[3] := 0;

z := 0;

Result := False;

for i := 1 to Length(ip) do if ip[i] in ziff then

else

begin

if ip[i] = '.' then

begin

Inc(z);

if z < 4 then st[z] := i

else

begin

IsWrongIP := True;

Exit;

end;

end

else

begin

IsWrongIP := True;

Exit;

end;

end;

if (z <> 3) or (st[1] < 2) or (st[3] = Length(ip)) or (st[1] + 2 > st[2]) or

(st[2] + 2 > st[3]) or (st[1] > 4) or (st[2] > st[1] + 4) or (st[3] > st[2] + 4) then

begin

IsWrongIP := True;

Exit;

end;

z := StrToInt(Copy(ip, 1, st[1] - 1));

if (z > 255) or (ip[1] = '0') then

begin

IsWrongIP := True;

Exit;

end;

z := StrToInt(Copy(ip, st[1] + 1, st[2] - st[1] - 1));

if (z > 255) or ((z <> 0) and (ip[st[1] + 1] = '0')) then

begin

IsWrongIP := True;

Exit;

end;

z := StrToInt(Copy(ip, st[2] + 1, st[3] - st[2] - 1));

if (z > 255) or ((z <> 0) and (ip[st[2] + 1] = '0')) then

begin

IsWrongIP := True;

Exit;

end;

z := StrToInt(Copy(ip, st[3] + 1, Length(ip) - st[3]));

if (z > 255) or ((z <> 0) and (ip[st[3] + 1] = '0')) then

begin

IsWrongIP := True;

Exit;

end;

end;

此文章由 http://www.ositren.com 收集整理 ,地址为: http://www.ositren.com/htmls/67949.html