Italian community of Lazarus and Free Pascal

Programmazione => Generale => Topic aperto da: Nicola - Dicembre 06, 2014, 06:15:55 pm

Titolo: [Risolto] Problema banale Try Except - Try Finally
Inserito da: Nicola - Dicembre 06, 2014, 06:15:55 pm
Salute a tutti, sto seguendo un manuale per apprendere il free pascal; ho un problema con le funzioni  Try Except e Try Finally, in quanto il programma si blocca nonstante la protezione; qualcuno mi potrebbe aiutare? Grazie
questo non va
Codice: [Seleziona]
program ExceptionHandling;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}{$IFDEF UseCThreads}
cthreads,
{$ENDIF}{$ENDIF}
Classes
{ you can add units after this };
var
x, y: Integer;
Res: Double;
begin
try
Write('Input x: ');
Readln(x);
Write('Input y: ');
Readln(y);
Res:= x / y;
Writeln('x / y = ', Res);
finally
Write('Press enter key to close');
Readln;
end;
end.
e nemmeno questo
Codice: [Seleziona]
cthreads,
{$ENDIF}{$ENDIF}
Classes, sysutils
{ you can add units after this };
var
x, y: Integer;
Res: Double;
begin
try
Write('Input x: ');
Readln(x);
Write('Input y: ');
Readln(y);
Res:= x / y;
Writeln('x / y = ', Res);
except
on e: exception do
begin
Writeln('An error occurred: ', e.message);
end;
end;
Write('Press enter key to close');
Readln;
end.

infatti se do x=6 e y=0 mi da quanto nell'immagine(http://)
Titolo: Re:Problema banale
Inserito da: nomorelogic - Dicembre 06, 2014, 07:51:51 pm
ciao Nicola

è molto strano, il codice (sto parlando della seconda versione del codice, quella con try...except, il primo è giusto che interrompa l'esecuzione) l'ho provato su linux 64bit e funziona a dovere; il risultato è il seguente:

Codice: [Seleziona]
test $ ./project1 
Input x: 6
Input y: 0
An error occurred: Division by zero
Press enter key to close

prova a cancellare tutti i file della compilazione, il codice è corretto
Titolo: Re:Problema banale
Inserito da: xinyiman - Dicembre 07, 2014, 04:46:35 pm
Una domanda Nicola, ma si blocca durante la fase di debug? Cioè il programma gira perchè hai schiacciato il triangolino verde dell'ide? Oppure hai lanciato l'eseguibile a mano?

Nel primo caso è giusto nel secondo non è normale che vada in errore
Titolo: Re:Problema banale
Inserito da: Nicola - Dicembre 09, 2014, 10:03:42 am
In effetti lanciando l'eseguibile (e non dal debug), funziona perfettamente; grazie a tutti per l'attenzione.