Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-03-2007
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Cita:
Empezado por jhonny
Parece que esto es mas complicado de lo que se cree, jejeje.
Parece que llevas razón, roman nos ha partido en dos.
__________________
Van Troi De León
(Not) Guía, Code vB:=Delphi-SQL, ¿Cómo?
Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto!
Responder Con Cita
  #2  
Antiguo 13-03-2007
moyo18 moyo18 is offline
Miembro
 
Registrado: mar 2007
Posts: 11
Poder: 0
moyo18 Va por buen camino
bueno a mi no me trabaja el codigo asi como lo tiene el d la arroba, siempre me guarda las cosas y no me tira el mensaje q esta malo porq no tiene ni arroba ni nada q paresca un email.

arreglando eso me hice con un comboxbox y pues ingeniandomelas un poquito saque un codigo

Código Delphi [-]
var
pri : string ; 
procedure TForm1.ComboBox2Change(Sender: TObject);
begin

  case combobox2.ItemIndex of

   0 :  begin
          pri := DBedit9.Text + '@hotmail.com' ;
         end;
   1 :  begin
          pri := DBedit9.Text + '@msn.com' ;
        end;
   2 :  begin
          pri := DBedit9.Text + '@yahoo.com' ;
        end;
   3 :  begin
          pri := DBedit9.Text + '@mts.net' ;
        end;
   4 :  begin
          pri := DBedit9.Text + '@shaw.ca' ;
        end;
  end;
end;

pero ojala se pueda hacer con el metodo ese d si no encuentra la arroba o el punto no lo permita.

y tambien sigo con lo del nuevo usuario, como hacer q queden en blanco los edits sin q se ponga los values q se les dan arriba, ya q se clickeo dos veces el nuevo usuario no me permite aregar nada y me da un error d un solo ya q se han insertado los otros valores autoamticamente.
Responder Con Cita
  #3  
Antiguo 13-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.561
Poder: 25
egostar Va camino a la fama
Indudablemente que validar un correo electronico tiene sus asegunes, hasta ahora se ha tratado de verificar la semantica del correo, pero eso solo nos dice que se escribio bien, yo agregaria un paso mas recuperando la IP del servidor de correo, usando el código que seoane acaba de proporcionar en otro hilo.

Aqui pego el código el cual nos garantiza al menos que se esta usando un servidor válido. Solo necesitamos agregar www. y lo que sigue del @.


Código Delphi [-]
Uses Winsock;

function GetIp(Host: string): string;
var
  WSAData: TWSADATA;
  HostEnt: phostent;
begin
  Result:= '';
  if WSAStartup(MAKEWORD(1, 1), WSADATA) = 0 then
  begin
    HostEnt:= gethostbyname(PChar(Host));
    if HostEnt <> nil then
      Result:= String(inet_ntoa(PInAddr(HostEnt.h_addr_list^)^));
    WSACleanup;
  end;
end;

procedure TForm1.BitBtn1Click(Sender: TObject);
begin
   ShowMessage(GetIp('www.hotmail.com'));
   ShowMessage(GetIp('www.esunabroma.com')); //NO válido
   ShowMessage(GetIp('www.yahoo.com.mx'));
   ShowMessage(GetIp('www.yahoo.com'));
   ShowMessage(GetIp('www.esunabroma.com')); //NO válido
   ShowMessage(GetIp('www.clubdelphi.com'));
   ShowMessage(GetIp('www.clubdelphi.com.mx')); //NO válido
end;

Esto nos regresa la IP si está correcto el servidor de correo, de otra forma nos da un valor nulo.

Yo creo que esto ya es un gran avance.

Saludos
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #4  
Antiguo 13-03-2007
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
Esta es una muy buena idea, aunque creo que no hay que descartar la validación gramatical.

Ya anteriormente se ha discutido esto, por ejemplo, en el hilo Como Saber si una Dirección de Correo es Válida????. En esa ocasión se planteó el uso de expresiones regulares y se habló de RegExp Studio, que me parece un buen enfoque.

Usar TRegExpr es cosa sólo de incluir una unidad en el proyecto así que no necesitamos instalar nada ni insertar componentes ni depender de dlls externas.

En el hilo mencionado se propone una expresión regular

Código:
[\w\d\-\.]+@[\w\d\-]+(\.[\w\d\-]+)+
que- según creo -puede reducirse a:

Código:
[\w\-\.]+@[\w\-]+(\.[\w\-]+)+
aunque no me queda claro que los guiones estén permitidos en un email y permitiría un punto inicial que no creo que sea válido.

Haciendo algunas pruebas, me ha gustado esta:

Código:
^\w+(\.\w+)*@(\w+(\.\w+)+)$
que podría completarse a

Código:
^[\w\-]+(\.[\w\-]+)*@([\w\-]+(\.[\w\-]+)+)$
si permitimos guiones.

Aplicando a nuestro caso, podemos implementar esta función:

Código Delphi [-]
uses
  RegExpr;

function EsEmailValido(Email: String; Ping: Boolean = false);
var
  RegExp: TRegExpr;

begin
  RegExp := TRegExp.Create;

  try
    RegExp.Expression := '^\w+(\.\w+)*@(\w+(\.\w+)+)$';
    Result := RegExp.Exec(Email);

    if Result and Ping then
      Result := GetIP(RegExp.Match[2]) <> '';
  finally
    RegExp.Free;
  end;
end;

El parámetro Ping sería para indicar si deseamos verificar la existencia del servidor.

// Saludos
Responder Con Cita
  #5  
Antiguo 13-03-2007
[egostar] egostar is offline
Registrado
 
Registrado: feb 2006
Posts: 6.561
Poder: 25
egostar Va camino a la fama
Cita:
Empezado por roman
Esta es una muy buena idea, aunque creo que no hay que descartar la validación gramatical.
Claro, asi es como lo soñe, primero se verifica gramaticalmente y si es correcta y ademas se desea, se valida la parte del servidor de correo.

Saludos Validados como lo diria nuestro buen amigo Al.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Responder Con Cita
  #6  
Antiguo 13-03-2007
[basti] basti is offline
Miembro Premium
 
Registrado: ago 2004
Posts: 388
Poder: 20
basti Va por buen camino
Cita:
Empezado por roman
aunque no me queda claro que los guiones estén permitidos en un email y permitiría un punto inicial que no creo que sea válido.
Los guiones sí son permitidos en los e-mails, lo del punto inicial no estoy seguro.
Responder Con Cita
  #7  
Antiguo 13-03-2007
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por vtdeleon
Parece que llevas razón, roman nos ha partido en dos.
Yo diria que en 3, ahhhh, yo que pense que la situación estaba casi que controlada...
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #8  
Antiguo 13-03-2007
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
Cita:
Empezado por jhonny
Yo diria que en 3, ahhhh, yo que pense que la situación estaba casi que controlada...
Yo diría que como ustedes lo estaban haciendo también se puede resolver. Nada más que ustedes sólo estaban considerando la segunda mitad de la cadena, después de la arroba.

Además ni siquiera las expresiones regulares son la panacea porque las #$%&/!"& direcciones de email son muy complejas, y según he visto en algunos lugares, acepta cosas muy raras, así que ni un método ni otro van a cubrir todos los casos.

// Saludos
Responder Con Cita
  #9  
Antiguo 08-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
Esta es una muy buena idea, aunque creo que no hay que descartar la validación gramatical.

Ya anteriormente se ha discutido esto, por ejemplo, en el hilo Como Saber si una Dirección de Correo es Válida????. En esa ocasión se planteó el uso de expresiones regulares y se habló de RegExp Studio, que me parece un buen enfoque.

Usar TRegExpr es cosa sólo de incluir una unidad en el proyecto así que no necesitamos instalar nada ni insertar componentes ni depender de dlls externas.

En el hilo mencionado se propone una expresión regular

Código:
[\w\d\-\.]+@[\w\d\-]+(\.[\w\d\-]+)+
que- según creo -puede reducirse a:

Código:
[\w\-\.]+@[\w\-]+(\.[\w\-]+)+
aunque no me queda claro que los guiones estén permitidos en un email y permitiría un punto inicial que no creo que sea válido.

Haciendo algunas pruebas, me ha gustado esta:

Código:
^\w+(\.\w+)*@(\w+(\.\w+)+)$
que podría completarse a

Código:
^[\w\-]+(\.[\w\-]+)*@([\w\-]+(\.[\w\-]+)+)$
si permitimos guiones.

Aplicando a nuestro caso, podemos implementar esta función:

Código Delphi [-]uses RegExpr; function EsEmailValido(Email: String; Ping: Boolean = false); var RegExp: TRegExpr; begin RegExp := TRegExp.Create; try RegExp.Expression := '^\w+(\.\w+)*@(\w+(\.\w+)+)$'; Result := RegExp.Exec(Email); if Result and Ping then Result := GetIP(RegExp.Match[2]) <> ''; finally RegExp.Free; end; end;


El parámetro Ping sería para indicar si deseamos verificar la existencia del servidor.

// Saludos
Hola roman, hoy me ha causado curiosidad un asunto, ¿Estas son expresiones propias del TRegExpr o es algun estandar que hay?
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
Responder Con Cita
  #10  
Antiguo 08-01-2009
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
¡Válgame!

Lo malo de las expresiones regulares, es que, pasados uns meses (o años), uno no tiene ni idea de cómo fue capaz de escribir tal serie de majaderías

En fin; aunque creo que hay variantes, las expresiones regulares más o menos son un estándar que, si no me equivoco, se basan en las que usa PERL.

// Saludos
Responder Con Cita
  #11  
Antiguo 08-01-2009
Avatar de jhonny
jhonny jhonny is offline
Jhonny Suárez
 
Registrado: may 2003
Ubicación: Colombia
Posts: 7.058
Poder: 30
jhonny Va camino a la famajhonny Va camino a la fama
Cita:
Empezado por roman Ver Mensaje
¡Válgame!

Lo malo de las expresiones regulares, es que, pasados uns meses (o años), uno no tiene ni idea de cómo fue capaz de escribir tal serie de majaderías

En fin; aunque creo que hay variantes, las expresiones regulares más o menos son un estándar que, si no me equivoco, se basan en las que usa PERL.
Jejeje, Bueno, muchas gracias por tu respuesta roman .
__________________
Lecciones de mi Madre. Tema: modificación del comportamiento, "Pará de actuar como tu padre!"

http://www.purodelphi.com/
http://www.nosolodelphi.com/
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Validar un Dbedit? kman Varios 10 13-03-2007 04:07:11
Validar y Autocompletar Fecha en un DBEdit gluglu OOP 4 29-12-2006 11:24:06
Validar un DBEdit con delphi interbase servicomp Conexión con bases de datos 8 06-08-2006 16:27:11
validar dbedit yeison Cristman Conexión con bases de datos 1 29-07-2006 21:55:56
como validar datos en el evento onkeypress de un dbedit? viajero2015 Varios 1 01-02-2004 21:41:59


La franja horaria es GMT +2. Ahora son las 17:23:01.


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