Utilizamos cookies propias y de terceros. [Más información sobre las cookies].
Política de cookies
Proyecto AjpdSoft

· Inicio
· Buscar
· Contactar
· Cookies
· Descargas
· Foros
· Historia
· Nosotros
· Temas
· Top 10
· Trucos
· Tutoriales
· Wiki
Proyecto AjpdSoft: Foros

AjpdSoft :: Ver tema - Función para comprobar sin un valor es numérico
Foros de discusión Buscar Perfil FAQ Iniciar sesión
Information Función para comprobar sin un valor es numérico

Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net   
Ver tema anterior :: Ver tema siguiente
AutorMensaje
alino
Buen usuario


Registrado: Feb 15, 2008
Mensajes: 7

Asunto: Función para comprobar sin un valor es numérico Responder citando

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?
MensajePublicado:
Jue Nov 12, 2009 6:35 pm
Top of PageVer perfil de usuario
alonsojpd
Administrador/Moderador


Registrado: Sep 16, 2003
Mensajes: 2687

Asunto: Re: Función para comprobar sin un valor es numérico Responder citando



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.
MensajePublicado:
Jue Nov 12, 2009 6:57 pm
Top of PageVer perfil de usuario
Mostrar mensajes de anteriores:   
Todas las horas son GMT - 1 Horas
Publicar nuevo tema Responder al tema
Foros de discusión » Borland Delphi, Codegear Delphi .Net  

Cambiar a:  
Key
  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