Asunto: Función para comprobar sin un valor es numérico
Estoy desarrollando una aplicación que calcula la interpolación lineal y polinómica de varios puntos. Necesito que el usuario sólo introduzca números en los cuadros de edición o bien que si introduce un valor que no sea numérico muestre un mensaje.
Me gustaría hacer una función que compruebe si una cadena de texto es un número válido ¿cómo puedo hacer esto?
Publicado:
Jue Nov 12, 2009 6:35 pm
alonsojpd Administrador/Moderador
Registrado: Sep 16, 2003 Mensajes: 2687
Asunto: Re: Función para comprobar sin un valor es numérico
Anuncios
alino escribió:
Estoy desarrollando una aplicación que calcula la interpolación lineal y polinómica de varios puntos. Necesito que el usuario sólo introduzca números en los cuadros de edición o bien que si introduce un valor que no sea numérico muestre un mensaje.
Me gustaría hacer una función que compruebe si una cadena de texto es un número válido ¿cómo puedo hacer esto?
Aquí tienes una función, por supuesto no es la mejor, pero es una forma rápida de resolver el problema:
Para el caso de un entero (integer):
Código:
//Comprueba si un valor es numérico
function esNumero (valor : string) : boolean;
var
numero : integer;
begin
try
numero := strtoint(valor);
result := true;
except
result := false;
end;
end;
Para el caso de un double:
Código:
//Comprueba si un valor es numérico
function esNumero (valor : string) : boolean;
var
numero : double;
begin
try
numero := StrToFloat(valor);
result := true;
except
result := false;
end;
end;
En ambas funciones utilizamos las funciones de Delphi "StrToFloat" y "StrToInt" para convertir una cadena de texto a double y a integer respectivamente. Si la función no puede convertir el valor de cadena devolverá un error, lo capturaremos y devolveremos true o false según se haya podido convertir o no.
Existen más posibilidades, por supuesto, otra es comprobar con el evento "OnKeyPress" del los cuadros de edición (TEdit) si lo que se introduce es un número o un texto para no dejar introducir letras en el cuadro. Aunque este caso puede ser más complicado, pues habría que realizar bastantes comprobaciones: el usuario debe poder introducir "-" (para números negativos), también "," como separador de decimales. Y se debe comprobar que el usuario no introduzca dos comas, ni dos guiones. Para este caso sería algo así (sin comprobar que se introduzcan dos guiones o dos o más comas):
Código:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (key in ['0'..'9']) and (Key <> ',')
and (Key <> '-') then
Key := #0;
end;
En este caso el código anterior lo ponemos en el evento OnKeyPress, si el usuario no introduce un número, una coma o el signo menos, la pulsación quedará anulada con key := #0, por lo que el usuario sólo podrá introducir número en el TEdit.
Puede publicar nuevos temas en este foro No puede responder a temas en este foro No puede editar sus mensajes en este foro No puede borrar sus mensajes en este foro No puede votar en encuestas en este foro
Visita nuestro nuevo sitio web con programas y contenidos actualizados: Proyecto A