Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Validar campo (https://www.clubdelphi.com/foros/showthread.php?t=43655)

Juan Reyes 17-05-2007 03:23:24

Validar campo
 
Buenas tardes, me podrian apoyar con esta sentencia, quiero validar un campo en el cual si el usuario escribe cualquier ya sea caracter o string de texto despliegue un mensaje. Debe admitir únicamente números ya sea enteros o decimales.
Código Delphi [-]
procedure Tfcapturact.copau1Exit(Sender: TObject);
begin
if copau1.text in ['a*'..'z*']then
 begin
   application.messagebox('error',
  'Error',mb_iconwarning);
  end
  else begin end;
end;

Gracias por su tiempo y apoyo.

jachguate 17-05-2007 03:27:53

Hola.

Por "Validar un campo" te referís a un campo de base de datos?

Juan Reyes 17-05-2007 22:24:46

Validar antes de guardar en una Base de datos
 
Esta validación es despues de que el usuario ingresa el string y cambia de TDedit.text.

jachguate 17-05-2007 23:20:33

bien... podes hacer algo como:
Código Delphi [-]
begin
  try
    StrToFloat(Edit1.Text);
  except
    on EConvertError do
    begin
      Edit1.SetFocus;
      ShowMessage('Debe ingresar un número válido!');
    end;
  end;
end;

Hasta luego.

;)

Juan Reyes 18-05-2007 03:08:29

Gracias de antemano por tu tiempo y apoyo, fíjate que ya lo probe colocando esta sentencia en el evento OnExit del campo para que me despliegue el mensaje derror al cambiar de campo pero me despliega el siguiente mensaje y truena el programa:

Project LibroVAE.exe raised exception class EConvertError with message "letra 'is not valid float value'.

Ojala y me puedas seguir apoyando. Gracias nuevamente.

jachguate 18-05-2007 03:12:35

Supongo que estas ejecutando la aplicación dentro del ide de delphi, y este salta por la excepción. Dado que no decis en que versión del mismo estas trabajando, no puedo indicarte cómo desactivar ese comportamiento... pero si corres tu aplicación desde fuera del ide, verás que funciona correctamente.

Es importante aprender a separar los mensajes del IDE de los de tu aplicación.

Hasta luego.

;)

egostar 18-05-2007 03:22:10

También podrías usar la funcion TryStrToFloat.

Código Delphi [-]
procedure TForm1.Edit1Exit(Sender: TObject);
var
  Valor: Extended;
begin
  if TryStrtoFloat(Edit1.Text,Valor) = true then begin
     ShowMessage(FloattoStr(Valor));
  end
  else begin
         ShowMessage('ERROR DE CONVERSION');
  end;
end;

Salud OS.

Juan Reyes 18-05-2007 03:27:55

Disculpa las molestias sabes, no se si tenga que ver la versión de Delphi estoy ocupando la 5, ya que al momento de compilarlo me despliega que no esta declarado TryStrToFloat.

Gracias por tu apoyo y tiempo.

egostar 18-05-2007 03:32:31

Vaya, pues no te queda mas remedio que usar StrtoFloat y cachar la excepcion, tal y como te lo mostró jachguate.

Salud OS

Juan Reyes 18-05-2007 03:37:35

Gracias, me comentas jachguate que dependiendo de la versión existe la forma de deshabilitar este comportamiento. Me podrias apoyar. Gracias de antemano a los dos.

Caral 18-05-2007 03:44:19

Hola
Como dice jachguate se puede usar el try, fuera de delphi funcionara, pero dentro te dara error, siempre es mejor en my opinion buscar otras alternativas y las hay.
saludos

egostar 18-05-2007 03:45:01

Pues solo podría decirte lo mismo que jachguate, el error que te muestra te va a aparecer siempre que ejecutes tu programa desde delphi, cuando lo ejecutas desde el ejecutable (perdón por el pleonasmo) no te lo va a mostrar y lo va a hacer correctamente mostrando solo el mensaje 'Debe ingresar un número válido!'.

Salud OS.

Juan Reyes 18-05-2007 03:49:52

Gracias por su apoyo y tiempo, quedo corriendo a todo dar. Corriendo desde fuera de Delphi.:)

jachguate 18-05-2007 03:50:23

Si es posible indicarle al ide de delphi las excepciones a la regla de parar cuando se producen las excepciones.. o bien que no queres que pare para nada.

Lamentablemente ya no tengo instalado nada mas viejo que bds 2006, así que lo diré de memoria:

Tools/Debugger Options/LanguageExceptions

Allí añadis la clase de excepción para la que no queres que pare; por ejemplo EConvertError, que es la que se dispara en este caso, o bien de-seleccionas el checkbox "Notify on language exceptions", en cuyo caso no parará independientemente de lo que ocurra... (no intentarlo si estas haciendo un programa que dispara misiles nucleares o formatea discos duros) ¡advertido estas!

Hasta luego.

;)

egostar 18-05-2007 03:54:44

Cita:

Empezado por jachguate
Lamentablemente ya no tengo instalado nada mas viejo que bds 2006, así que lo diré de memoria:

Tools/Debugger Options/LanguageExceptions

Pues si, efectivamente, que buena memoria tienes jachguate, no se detiene en el error EConvertError, lo he probado con Delphi4 y no se detiene.

Cita:

Empezado por jachguate
(no intentarlo si estas haciendo un programa que dispara misiles nucleares o formatea discos duros) ¡advertido estas!

:D:D:D:D:D:D

Como se aprende en el club.

Salud OS.

Juan Reyes 18-05-2007 03:54:59

Gracias, fíjate que en realidad no he practicado el trabajar ejecutandolo fuera del ide de Delphi, abrire un nuevo. Pregunta ¿Abró otro hilo para salir de esta duda?

Saludos.:o

egostar 18-05-2007 03:56:51

Si es para este tema de las excepciones no lo veo necesario.

Salud OS.

Juan Reyes 18-05-2007 04:01:19

Muchas gracias y saludos
 
Exactamente como lo dijiste jachguate, que buena memoria, agregue está excepción y LISTO.
Gracias jachguate, egostar y Caral. Espero pronto poder estar en contacto con ustedes.
Buena tarde.;)

Caral 18-05-2007 04:01:31

Hola
Tal vez este par de componentes te sirvan.
Aqui lo tienes:
Saludos

Juan Reyes 18-05-2007 04:05:00

Gracias Caral los voy a checar. Buen día.
 
:rolleyes:


La franja horaria es GMT +2. Ahora son las 02:52:38.

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