Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Funcionamiento try? (https://www.clubdelphi.com/foros/showthread.php?t=69131)

nena_yei 28-07-2010 09:02:47

Funcionamiento try?
 
Buenos días!

Tengo el siguiente código:

Código:

try
  i:=strtoint(lpstrText);
except
  nonota:=true;
end;

Entonces, la cosa es que si lpstrText es un texto que se puede convertir a integer, lo asignará a la variable i, i si no se puede convertir a integer porque es una palabra pues generará un error y entrará en el except. Pues bien, no sé si el funcionamiento del try no es ese o que algo estoy haciendo mal, pero no me entra en el except, me da error el strtoint y se cuelga el programa.
Alguien podría darme una solución a este código o una alternativa al funcionamiento deseado.

Muchísimas gracias!

Neftali [Germán.Estévez] 28-07-2010 10:54:36

Este código debería funcionar perfectamente.
es posible que desde el IDE te estén saltando errores porque tiewnes la opción "Stop on Delphi Exceptions" activada. Desactívala desde:

Tools/Debugger options/Language exceptions/Stop on Delphi Exceptions.

ecfisa 28-07-2010 10:58:01

Hola nena_yei.

En el editor de Delphi, hacé lo siguiente:
  1. Menú Tools.
  2. Item Debugger Options.
  3. Pestaña Languaje Exceptions.
  4. Destildá la opción Stop on Delphi Exceptions.
Saludos.

ecfisa 28-07-2010 10:58:50

Ups !!!! perdón.

Eso me pasa por adornar tanto el post !:D

delphi.com.ar 28-07-2010 15:37:12

No quiero desvirtuar, pero... ¿conoces la función TryStrToInt?

javier7ar 28-07-2010 21:54:49

Cita:

Empezado por delphi.com.ar (Mensaje 371816)
No quiero desvirtuar, pero... ¿conoces la función TryStrToInt?

... o StrToIntDef(texto, valorXDefecto) para poner un valor por defecto en caso de que no se pueda convertir...

ecfisa 29-07-2010 05:30:03

Hola gente.
Totalmente de acuerdo con delphi.com.ar y javier7ar.
Con esas funciones se puede comprobar la conversión sin que que se lanze una excepción.

Pero nena_yei dijo:
Cita:

Pues bien, no sé si el funcionamiento del try no es ese o que algo estoy haciendo mal,...
Por lo que tratamos de aclarar por qué no le funcionaba el try except.

Si el caso expuesto hubiera sido este:
Código:

procedure TForm1.Button1Click(Sender: TObject);
var
  t: TextFile;
begin
  AssignFile(t,'F:\prueba.txt'); // ( PRUEBA.TXT NO FUE CREADO AUN )
  try
  Reset(t);
  except
  ShowMessage('El archivo no existe');
  end;
end;

No habría podido evitar que se eleve la excepción.

Saludos.

toni.vi 30-07-2010 12:23:51

Si lo que quieres es utilizar un try, debería de funcionar tal como te lo dicen.
Yo utilizo lo siguiente:
Código Delphi [-]
i:= StrToIntDef(lpstrText, -1);
if i = -1 then nonota:=true;

delphi.com.ar 30-07-2010 20:12:04

Cita:

Empezado por toni.vi (Mensaje 372096)
Si lo que quieres es utilizar un try, debería de funcionar tal como te lo dicen.
Yo utilizo lo siguiente:
Código Delphi [-]
i:= StrToIntDef(lpstrText, -1);
if i = -1 then nonota:=true;

Insisto, para el código de él me parece mas correcto TryStrToInt

Código Delphi [-]
nonota := TryStrToInt(lpstrText, i);


La franja horaria es GMT +2. Ahora son las 04:50:23.

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