Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-11-2012
BioStudio BioStudio is offline
Miembro
NULL
 
Registrado: nov 2012
Posts: 15
Poder: 0
BioStudio Va por buen camino
Problem con IF y Else

Resulta que debo verificar unos campos que estos esten completos, por ende use un IF para verificar cada uno, entonces en el caso que uno de estos campos no este completo mostramos un mensaje de error, en el caso que este completos, ejecutamos una funcion x:

Código Delphi [-]
// Agregar información a la Tabla.
      IF Edit1.Text = '' THEN
        // Si la caja de Texto de Nombre de Usuario esta sin contenido, lanzamos
        // Error.
        begin
        Application.MessageBox( 'No ha rellenado el nombre del usuario.', 'Acceso denegado', MB_ICONSTOP );
        end;
      if Edit2.Text = '' Then
              // Si la caja de Texto de Password esta sin contenido, lanzamos
              // Error.
              begin
              Application.MessageBox( 'No ha rellenado el password para el usuario.', 'Acceso denegado', MB_ICONSTOP );
              end
      else;

with X.X.X.X do
    begin (...)

bien lo que pasa es que, por ejemplo no completamos nada pero siguen cumpliendo la función, he cambiado muchas veces los ";" y nada.. osea que verifica el primer Edit, no esta completo lanza error, mira el Edit2, no esta completo y luego ejecuta la función, cosa que no debe pasa. como se soluciona esto?
Responder Con Cita
  #2  
Antiguo 07-11-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola BioStudio.

Podes hacer:
Código Delphi [-]
  ...
  if Edit1.Text = '' then
  begin
    MessageBox(Handle,'No ha rellenado el nombre del usuario.', 'Acceso denegado', MB_ICONERROR);
    Edit1.SetFocus;
    Exit
  end;
  if Edit2.Text = '' then
  begin
    MessageBox(Handle,'No ha rellenado el password para el usuario.', 'Acceso denegado', MB_ICONERROR);
    Edit2.SetFocus;
    Exit
  end;
  // resto del código
  ...

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 07-11-2012
Avatar de Maniches
Maniches Maniches is offline
Miembro
 
Registrado: nov 2012
Ubicación: Lima - Perú
Posts: 67
Poder: 12
Maniches Va por buen camino
Lightbulb

Yo creería que pruebes controlarlo en los eventos OnExit de cada componente TEdit:
Ya que si se hiciera clic en el botón de validación. al salir del foco del componente le va a exigir que haya ingresado: Edit1 ó Edit2
Ya que no tiene mucho sentido que se intente ingresar con usuario/password vacios...
Es mi recomendación.

Saludos.

Maniche
Responder Con Cita
  #4  
Antiguo 07-11-2012
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
Una variante de la propuesta de ecfisa, usando excepciones:

Código Delphi [-]
 ...
  if Edit1.Text = '' then
  begin
    Edit1.SetFocus;
    raise Exception.Create('No ha rellenado el nombre del usuario.';
  end;
  if Edit2.Text = '' then
  begin
    Edit2.SetFocus;
    raise Exception.Create('No ha rellenado el password para el usuario.');
  end;
  // resto del código
  ...

// Saludos
Responder Con Cita
  #5  
Antiguo 07-11-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Cita:
Empezado por roman Ver Mensaje
Una variante de la propuesta de ecfisa, usando excepciones:

Código Delphi [-]
 ...
  if Edit1.Text = '' then
  begin
    Edit1.SetFocus;
    raise EInvalidArgument.Create('No ha rellenado el nombre del usuario.';
  end;
  if Edit2.Text = '' then
  begin
    Edit2.SetFocus;
    raise EInvalidArgument.Create('No ha rellenado el password para el usuario.');
  end;
  // resto del código
  ...

// Saludos
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #6  
Antiguo 08-11-2012
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
Aunque semánticamente EInvalidArgument luce adecuado, la ayuda de delphi dice:

Cita:
EInvalidArgument is the exception class for out-of-range parameters in specialized math and accounting functions.
que no necesariamente tiene qué ver con las validaciones que aquí se hacen.

Pero es cierto es que conviene más usar una excepción específica que una general como la que puse yo. Quizá definir un EEmptyField y/o EInvalidField.

// Saludos
Responder Con Cita
  #7  
Antiguo 08-11-2012
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Sí; quizá tomé el "InvalidArgument" demasiado alegremente... quizá porque me fié de Delphi Basics. Pero entendiste la idea Román.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #8  
Antiguo 08-11-2012
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 dec Ver Mensaje
Pero entendiste la idea Román.
Síp

// Saludos
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
Problem in BindingCursor pache Firebird e Interbase 2 21-07-2005 16:28:24
Problem in bilding cursor... Iseberiano Varios 0 03-06-2005 16:44:07
problem con socket Patuquin Providers 4 22-03-2004 08:14:26
Problem con Canvas deimonio Gráficos 3 31-12-2003 10:55:02
Query problem Un abrazo Conexión con bases de datos 1 21-05-2003 15:02:59


La franja horaria es GMT +2. Ahora son las 00:00: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
Copyright 1996-2007 Club Delphi