Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Funcion para validar IP (https://www.clubdelphi.com/foros/showthread.php?t=4018)

Mauricio Correa 29-09-2003 11:27:47

Funcion para validar IP
 
Hola que tal, alguien conoce, tiene o ha visto alguna función por ahi para validar la direccion IP que esta en un cuadro de texto (edit1). Se supone que es ingresada por el usuario.

Saludos y gracias!!

__cadetill 29-09-2003 12:53:33

qué significa validar la IP? mirar si ya existe o mirar si está bien construida?

Si es la segunda, sólo tienes que controlar que sean 4 tuplas de numero inferiores a 255 y mayores o iguales a 0 separados por puntos

Si es la primera, en mi web tienes dos demos de cómo capturar las IPs de una red que te puede servir para lo que quieres

Mauricio Correa 29-09-2003 22:50:57

Me referia a que si alguien tiene ECHA una funcion para validar la direccion IP que ha ingresado el usuario, queria saber si habia una función CONFIABLE que estuviera echa en algún lado, es decir validar en sintaxis y semantica pero no si este IP responde o esta activo.

__cadetill 30-09-2003 10:04:09

Pues hecha, lo que se dice hecha, no la tengo, pero tampoco lo veo demasiado difícil (a priori)

Básicamente seria recorrer con un bucle el string que contiene la IP

Código:

respuesta := true;
while i <= length(StrIP) do

e ir almacenando el valor en otro hasta encontrar los TRES puntos

Código:

if StrIP[i] <> '.' then  // no es '.'
  str := str + StrIP[i]
else  // es punto -> comprobamos número
begin
  if TryStrToInt(str, myInt) then
  begin
    if not (myInt in [0..255]) then
    begin
      ShowMessage('IP incorrecta');
      Respuesta := false;
      Break;
    end;
  end
  else
  begin
    ShowMessage('IP incorrecta');
    Respuesta := false;
    Break;
  end;
end;

y verificar fuera del bucle la última tupla de la misma manera y verificar el estado de la variable Respuesta

Bueno, espero que la idea te de pistas por donde ir

roman 30-09-2003 17:04:43

Otra forma:

Código:

function IsValidIP(S: String): Boolean;
var
  Strings: TStringList;

begin
  Result := false;

  Strings := TStringList.Create;
  Strings.Delimiter := '.';
  Strings.DelimitedText := S;

  if Strings.Count <> 4 then exit;

  repeat
    Result := (StrToIntDef(Strings[0], -1) in [0..255]);
    Strings.Delete(0);
  until (Strings.Count = 0) or not Result;

  Strings.Free;
end;

// Saludos

__cadetill 30-09-2003 18:48:11

Cita:

Posteado originalmente por roman
Otra forma:
Ciertamente, ne me he acordado del Delimiter de los TStrings :)

guillotmarc 30-09-2003 22:54:28

Hola.

Si quieres afinar más tu algoritmo de validación. Puedes comprobar que la dirección IP sea una dirección de valida de clase A, B o C

http://es.tldp.org/Manuales-LuCAS/GA...addresses.html

Ejemplos de direcciones que no són validas :

127.0.0.1 (dirección de loopbak, aunque es una dirección valida no apunta a ninguna maquina sinó que enviará a si mismo cualquier paquete con esa dirección)
192.1698.0.0 (indica la red 192.168 y no una maquina)
10.255.255.255 (para hacer un broadcast a todos los nodos de la red 10)
254.0.0.1 (la red no es de clase A, B, C)

Saludos.

Mauricio Correa 01-10-2003 15:04:25

Muchas gracias a todos!!


La franja horaria es GMT +2. Ahora son las 09:34:53.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi