Validando um endereço IP

 

A função IsWrongIP recebe uma parâmetro de entrada do tipo string. Seu objetivo é verificar através da estrutura da string se o endereço IP digitado é válido. Observe abaixo como foi desenvolvida esta função de validação.

 

function IsWrongIP(ip: string): Boolean;

var

   z:integer;

   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;

 

Veja abaixo a interface deste aplicativo.