Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Necesito validar una cadena de IP y Puerto ingresado en un Edit1 (xx.xx.xx.xx:port) (https://www.clubdelphi.com/foros/showthread.php?t=37619)

Black_Ocean 18-11-2006 00:03:41

Necesito validar una cadena de IP y Puerto ingresado en un Edit1 (xx.xx.xx.xx:port)
 
Hola ClubDelphi!

Primero que nada... quiero felicitarlos por todos estos años de ayuda que han dado a todo los usuarios de Delphi en Internet ;) Hoy me inscribí por primera vez acá y es mi primer posteo :P espero que me puedan ayudar :D

Bueno amigos... mi consulta es la siguiente:

Ando buscando una función que valide una IP y puerto ingresada por el usuario en un Edit con el siguiente formato:

xx.xx.xx.xx:Port

ejemplos

210.114.174.96:4480
128.114.63.15:3128
138.23.204.133:3128
138.23.204.133:3127
140.247.60.126:3128

En pocas palabras, lo que quiero es que valide ese formato de cadena ingresado por el usuario (formato para tipo proxy, socks 4 y socks 5)

Realmente la he buscado en todo internet y no he encontrado esta función para este requerimiento :S

De antemano, muchísimas gracias y espero que me puedan ayudar :)

Cordiales saludos ;)

seoane 18-11-2006 00:30:12

Vamos con un poco de código:
Código Delphi [-]
uses Winsock;

function Validar(Str: string): Boolean;
var
  i: integer;
  ip: string;
begin
  Result:= FALSE;
  if Pos(':',Str) > 0 then
  begin
    ip:= Copy(Str,1,Pos(':',Str)-1);
    Delete(Str,1,Pos(':',Str));
    Result:= (inet_addr(PChar(ip)) <> INADDR_NONE) and
      TryStrToInt(Str,i) and (i<65535) and (i>0);
  end;
end;

La función anterior separa en dos partes la cadena, la ip por un lado y el puerto por el otro. Luego intenta convertir la ip y el puerto a sus correspondientes valores binarios, si no puede quiere decir que no son validos.

Un ejemplo de como funciona:
Código Delphi [-]
// Estas espresiones devuelven TRUE
Validar('210.114.174.96:4480');  // La ip en formato decimal
Validar('0xd2.0x72.0xae.0x60:4480'); // La ip en formato hexadecimal
Validar('210.0x72.174.96:4480'); // La ip en formato mixto

// Estas devuelven FALSE
Validar('210.300.174.96:4480'); // Uno de los valores esta fuera del rango
Validar('210.hola.174.96:4480');  // Esto no es una ip
Validar('210.114.174.96:1000000'); // El puerto esta fuera del rango

Black_Ocean 18-11-2006 00:46:41

Cita:

Empezado por seoane
Vamos con un poco de código:

Amigo, he probado tu código y me funciona perfectamente para mi requerimiento, realmente te has pasado, muy agradecido por la rápida y certera respuesta. Muy contento, realmente necesitaba mucho esta función! :P

Gracias a ti y a ClubDelphi por esto, estoy en deuda contigo ;)

Gracias nuevamente :D

saludos ;)


La franja horaria es GMT +2. Ahora son las 20:36:36.

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