Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   try ... except... no toma la excepcion (https://www.clubdelphi.com/foros/showthread.php?t=44851)

saldanaluis 16-06-2007 01:10:50

try ... except... no toma la excepcion
 
Les agradecería si alguien me puede abrir los ojos en este punto. Tengo un codigo con try... except que no esta tomando la excepción y la maneja el handler interno.. Les pongo el código que tengo..
Código Delphi [-]
 
procedure TFrmTransacs.EdtCostoUnExit(Sender: TObject);
begin
Try
  Costo_Unit_Trans := StrtoFloat(EdtCostoUn.Text);
except
  on EConvertError do
    begin
    ShowMessage(EdtCostoUn.Text + ' No es un valor numerico. Favor de corregir');
    EdtCostoUn.SetFocus;
    end;
end;
end;

Gracias por sus respuestas y comentarios.
Luis

jhonny 16-06-2007 01:24:40

Cuando estas fuera de diseño también te muestra el error?...Pues lo probé en mi Delphi 6 y a mi me funciona bien, pruebalo fuera del IDE de delphi y si sigue el problema haz lo siguiente y dinos si te muestra algún error en pantalla, pues puede que sea otra cosa mas no la que explicas:
Código Delphi [-]
 
procedure TFrmTransacs.EdtCostoUnExit(Sender: TObject);
begin
  Try
    Costo_Unit_Trans := StrtoFloat(EdtCostoUn.Text);
  except
    on EConvertError do
    begin
      ShowMessage(EdtCostoUn.Text + ' No es un valor numerico. Favor de corregir');
    EdtCostoUn.SetFocus;
    end
    else
    begin
      raise;
    end;
  end;
end;

HenryAraniva 16-06-2007 01:26:58

no se si ya has probado ese codigo corriendo el ejecutable, es decir estando fuera de delphi. Cuando yo he usando el try si estoy editando el codigo y desde ahí lo ejecuto parece que el manejo de los errores no funcionara pero cuando ejecuto el .exe ahí si veo los mensajes de error que he escrito, no se si ese será tambien tu caso.

saldanaluis 16-06-2007 01:32:16

Gracias por sus respuestas... Efectivamente, cuendo ejecuto el .exe fuerra del IDE si toma la excepción y envía el mensaje que le codifiquè.
¿Quiere decir que esto es un error del Delphi7 que estoy utilizando? ¿Es alguna opción del IDE que no he activado? Gracias nuevamente.

jhonny 16-06-2007 01:39:03

Cita:

Empezado por saldanaluis
Gracias por sus respuestas... Efectivamente, cuendo ejecuto el .exe fuerra del IDE si toma la excepción y envía el mensaje que le codifiquè.
¿Quiere decir que esto es un error del Delphi7 que estoy utilizando? ¿Es alguna opción del IDE que no he activado? Gracias nuevamente.

No es error de Delphi, lo que sucede es que para nosotros los que programamos nos interesa ver los errores "reales" del asunto dado el caso de que sea necesario, en este caso la idea es que el usuario final no vea el error, si no mas bien un mensaje personalizado por ti mismo, pero para ti si puede ser de utilidad que te muestre el error "Real". En todo caso si no te convencen mis argumentos podrás desactivar el asunto quitando el visto bueno que se encuentra en: Tools|Degger Options|Language Exceptions y desactivas el CheckBox llamado "Stop on Delphi Exceptions"... Espero me haya hecho entender y que te sirva.

eduarcol 16-06-2007 15:37:39

Creo que antes de que salte la excepcion porq no pruebas con la funcion StrtoFloatDef es mucho mas facil de utilizar, seria algo asi

Código Delphi [-]
Costo_Unit_Trans := StrtoFloatDef(EdtCostoUn.Text, -1);
if Costo_Unit_Trans = -1 then
begin
   ShowMessage(EdtCostoUn.Text + ' No es un valor numerico. Favor de   corregir');
   EdtCostoUn.SetFocus;
end;


La franja horaria es GMT +2. Ahora son las 16:35:20.

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