Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-11-2006
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
Exclamation 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

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

Última edición por Black_Ocean fecha: 18-11-2006 a las 01:12:11.
Responder Con Cita
  #2  
Antiguo 18-11-2006
Avatar de seoane
[seoane] seoane is offline
Miembro Premium
 
Registrado: feb 2004
Ubicación: A Coruña, España
Posts: 3.717
Poder: 24
seoane Va por buen camino
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

Última edición por seoane fecha: 18-11-2006 a las 01:37:59.
Responder Con Cita
  #3  
Antiguo 18-11-2006
Avatar de Black_Ocean
Black_Ocean Black_Ocean is offline
Miembro
 
Registrado: nov 2006
Posts: 128
Poder: 18
Black_Ocean Va por buen camino
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

saludos
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Función PORT. para puerto LPT en XP vicruffo Varios 2 10-03-2007 00:21:09
Busco ordenador o portátil Arcioneo Varios 2 18-07-2006 14:49:32
Como se usa el Componente Serial Port en C# (VS2005)? z-7 .NET 0 16-12-2005 06:02:05
Verificar si el valor introducido en un edit1.text es un numero o una cadena ctronx Varios 6 26-06-2004 04:14:18


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


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