Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Internet
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-09-2003
Mauricio Correa Mauricio Correa is offline
Miembro
 
Registrado: ago 2003
Posts: 15
Poder: 0
Mauricio Correa Va por buen camino
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!!
Responder Con Cita
  #2  
Antiguo 29-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 29-09-2003
Mauricio Correa Mauricio Correa is offline
Miembro
 
Registrado: ago 2003
Posts: 15
Poder: 0
Mauricio Correa Va por buen camino
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.
Responder Con Cita
  #4  
Antiguo 30-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
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
Responder Con Cita
  #5  
Antiguo 30-09-2003
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
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

Última edición por roman fecha: 30-09-2003 a las 17:07:46.
Responder Con Cita
  #6  
Antiguo 30-09-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 24
__cadetill Va por buen camino
Cita:
Posteado originalmente por roman
Otra forma:
Ciertamente, ne me he acordado del Delimiter de los TStrings
Responder Con Cita
  #7  
Antiguo 30-09-2003
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Poder: 23
guillotmarc Va por buen camino
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.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).

Última edición por guillotmarc fecha: 01-10-2003 a las 17:23:29.
Responder Con Cita
  #8  
Antiguo 01-10-2003
Mauricio Correa Mauricio Correa is offline
Miembro
 
Registrado: ago 2003
Posts: 15
Poder: 0
Mauricio Correa Va por buen camino
Muchas gracias a todos!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:38:49.


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
Copyright 1996-2007 Club Delphi