PDA

Ver la Versión Completa : Validar campo


Juan Reyes
17-05-2007, 03:23:24
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.
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
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:

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.


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
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.


(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
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
:rolleyes:

jachguate
18-05-2007, 23:00:38
Gracias, fíjate que en realidad no he practicado el trabajar ejecutandolo fuera del ide de Delphi

Delphi genera ejecutables. Lo único que tenes que hacer es ubicar el exe de tu aplicación (por defecto lo crea en la misma carpeta donde está el dpr), darle doble clic y listo!

Hasta luego.

;)