Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   validar un integer cargado en un edit (https://www.clubdelphi.com/foros/showthread.php?t=69025)

marcos_0586 21-07-2010 16:37:13

validar un integer cargado en un edit
 
Hola gente del foro, les comento que estoy realizando una aplicación en delphi7 y me surgió un problemita a la hora de validar un edit, el tema es asi yo ingreso un numero de DNI (tipo numérico) en un edit luego paso ese dato a integer y lo guardo en una tabla de esta forma: Table1.FieldByName('Dni').AsInteger:=StrToInt(Edit3.Text);
Cuando se ingresa un valor que no es numérico la aplicación se cuelga porque no es un valor valido para almacenar en la tabla, mi idea es anticiparme a la llegada del error y "desviar" el código de manera que no se cuelgue la aplicación y avisar al usuario que ese no es un valor permitido, pero no se me ocurre como? es posible lograr esto o algo parecido? gracias.

Neftali [Germán.Estévez] 21-07-2010 17:54:05

La más sencilla que se me ocurre es que utilices:

Código Delphi [-]
Table1.FieldByName('Dni').AsInteger:=StrToInt(Edit3.Text, 0);

Si es incorrecto te guardará un 0 en lugar de fallar.
Otra opción es que compruebes el contenido antes de intentar guardarlo, para avisar al usuario.

Aun puedes utilizar otra similar: TryStrToInt

luisgutierrezb 21-07-2010 19:30:51

Nada mas como complemento, o no se si en versiones nuevas de delphi se pueda con el strtoint, pero en versiones hasta la 7 es StrToIntDef(Edit3.Text, 0);

ecfisa 21-07-2010 19:50:08

Hola marcos.

Existen dos modos que pueden ingresar caracteres que no son números, en forma directa y pegándolos sobre el Edit.

Para evitar el ingreso usa el evento OnKeyPress del Edit:
Código:

procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in [#8,#13,'0'..'9']) then
  begin
    Beep;
    Key:= #0;
  end;
end;

Para evitar que peguen caracteres no numéricos, usa el evento OnExit:
Código:

procedure TForm3.Edit1Exit(Sender: TObject);
var
  n,cd: Integer;
begin
  Val(Edit3.Text, n, cd);
  if cd > 0 then
  begin
    ShowMessage('No es un número válido');
    Edit1.SetFocus;
  end;
end;

Saludos.


La franja horaria es GMT +2. Ahora son las 16:42:53.

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