Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pequeño Problema con Try. (https://www.clubdelphi.com/foros/showthread.php?t=68403)

Ferrer 11-06-2010 12:22:42

Pequeño Problema con Try.
 
Buenas, soy nuevo y estaba buscando un foro de apoyo a los estudios, para aclarar muchas de las dudas que el profesor no quiere o no sabe solucionar xD
Si me podeis ayudar os lo agradeceré.

Mi duda es la siguiente, en un formulario de lectura de datos tengo que leere entre otros un dato numérico y quiero hacer que si el usuario introduce algo distinto a un numero en el edit Le avise con un showmessage antes de petar.
He mirado por foros y con un Try Except debería ir, mi profesor me dijo q lo hiciera asi, pero como si nada, si pongo un numero va bien , normal, pero si pongo una letra peta el prrograma =.

Este es el codigo al pulsar el boton OK;
Código Delphi [-]
 
procedure TFrInserir.BoknormalClick(Sender: TObject);
begin
Crearptr;
UCA.insertf(actvol);
close;
end;

Y este es el codigo del Procedure CrearPtr:
Código Delphi [-]
Procedure TFrInserir.crearptr;
begin
  new(actvol);
  actvol^.Comp:=ecomp.text;
  Try                                             
    actvol^.Num:=Strtoint(enum.text);
  Except
    on E: EConversionError do
    ShowMessage('Numero de vol incorrecte');
  end;

  actvol^.Avio:=Eavio.Text;
  actvol^.desti:=edesti.Text;
  actvol^.ptotal:=Strtoint(eptotal.Text);

end;

El programa es una especie de mantenimiento de vuelos de un aeropuerto, los vuelos son punteros de un registro, por ahora lo estoy intentando solo con el numero de vuelo, pero si lo consigo lo ahria tambien con el numero de plazas totales (ptotal).

Añadir tambien, que es el proyecto final de curso, y la verdad me urge un poco, la semana que viene tengo que entregarlo y cuanto mas lo perfeccione mejor. Si alguien esta interesado tambien le puedo pasar el proyecto entero.

Gracias y un Saludo.

vejerf 11-06-2010 12:59:49

Hola,
Echale un vistazo a la funcion TryStrToInt que creo que te puede servir.

Saludos!

Ferrer 11-06-2010 14:06:40

Muchíssimas gracias, de verdad.
Despues de trastear un poco, probar cosas y escribir un apr de líneas de código más lo he dejado asi:

Código Delphi [-]
Function TFrInserir.crearptr:Boolean;
var x:integer;
begin
  result:=true;
  new(actvol);
  actvol^.Comp:=ecomp.text;
  If TryStrtoint(enum.text,x) Then Begin  //IF 1
    If Uca.Cerca(StrToInt(enum.Text))=NIL Then Begin  //IF 2
      actvol^.Num:=StrToInt(enum.Text);
      actvol^.Avio:=Eavio.Text;
      actvol^.desti:=edesti.Text;
      If TryStrToInt(eptotal.Text,x) Then actvol^.ptotal:=Strtoint(eptotal.Text) Else Begin    //ELSE 3
        ShowMessage('Numero total de passatgers incorrecte');;
        result:=false;
        eptotal.Text:='';
      end  //ELSE 3 END
    End {IF 2 END} Else Begin //ELSE 2
      ShowMessage('Aquest vol ja existeix');
      result:=false;
      enum.Text:='';
    End  //ELSE 2 END
  End{IF 1 END}  Else Begin //ELSE 1
    ShowMessage('Numero de vol incorrecte');
    result:=false;
    enum.Text:='';
  end; //ELSE 1 END


end;

Código Delphi [-]
procedure TFrInserir.BoknormalClick(Sender: TObject);
begin
If Crearptr Then Begin;
  UCA.insertf(actvol);
  close;
end;
end;


Me temo que al menos en ese formulario ya no se puede petar :D


La franja horaria es GMT +2. Ahora son las 12:31:29.

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