Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ayuda Por Favor! Condición If (https://www.clubdelphi.com/foros/showthread.php?t=69443)

javave 18-08-2010 18:31:03

Ayuda Por Favor! Condición If
 
Hola amigos qué tal?

Epa soy novato en Delphi, apenas empecé a usarlo ayer.

Estoy creando un programita para familiarizarme con Delphi. Sin embargo, tengo una duda que me está matando:mad::confused::

Estoy creando una condición y necesito saber cómo hago para extraer los datos de un EDIT para poder aplicar la condición.

Hasta ahora tengo este código:

var
prueba: Double;

begin
prueba := StrToFloat(Valor.Text);
prueba := Format([prueba]);
if isNAN(prueba) then
ShowMessage ('Lo que introdujo no es un número')
end.

Donde <<Valor>> es es nombre del EDIT donde el usuario introduce los números.

El objetivo es que el programa avise cuando el usuario introduce letras en ese EDIT. El programita que estoy desarrollando es un conversor.:D

Gracias espero su respuesta.

ecfisa 18-08-2010 18:46:38

Hola javave.

Podés asignar esto al evento OnExit del TEdit:
Código Delphi [-]
procedure TForm1.ValorExit(Sender: TObject);
var
  Value: Integer;
begin
  if not TryStrToInt(Valor.Text, Value) then
  begin
    ShowMessage('No ingresó un número');
    Valor.SetFocus;
  end;
end;

O directamente evitar que lo ingrese, asignando esto al evento OnKeyPress del TEdit:
Código Delphi [-]
procedure TForm1.ValorKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in [#8,#13,'0'..'9']) then // teclas permitidas BacSpace,Intro,'0'..'9'
  begin
    Beep;
    Key:= #0;
  end;
end;

Hay otras opciones, pero creo que estas son simples y te funcionaran bién.

Saludos.

Chris 18-08-2010 19:58:55

Normalmente siempre es más oportuno utilizar la función TryStrToFloat en lugar de StrToFloat. TryStrToFloat devuelve TRUE si la cadena dada en el primer parámetro solo tenía números, de lo contrario, devolverá FALSE.
Código Delphi [-]
var
    prueba: Double;
begin
    if not TryStrToFloat(Valor.Text, Prueba) then
    begin
        ShowMessage ('Lo que introdujo no es un número');
        Exit;
    end;
end;

ecfisa 18-08-2010 20:06:34

Cita:

Empezado por Chris (Mensaje 373875)
Normalmente siempre es más oportuno utilizar la función TryStrToFloat en lugar de StrToFloat. TryStrToFloat devuelve TRUE si la cadena dada en el primer parámetro solo tenía números, de lo contrario, devolverá FALSE.


Correcto, con TryStrToFloat ampliamos la opción a números reales.
Te comento javave que TryStrToInt funciona del mismo modo pero con enteros.

En ese caso la verificación OnKeyPress queda:
Código Delphi [-]
procedure TForm1.ValorKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in [#8, #13, ',' , '0'..'9']) then // teclas permitidas BacSpace,Intro,'0'..'9', ',' o '.'
  begin
    Beep;
    Key:= #0;
  end;
end;

De acuerdo al delimitador especificado poné '.' o ','

Para especificarlo podés usar la variable DecimalSeparator.
Para el código de arriba:
Código Delphi [-]
  DecimalSeparator := ',';


Saludos.

javave 18-08-2010 21:00:27

Solved!
 
Gracias a todos por su apoyo!

Ya pude resolver el problema! :D


La franja horaria es GMT +2. Ahora son las 07:10:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi