为什么尝试...除了块在这里不起作用
Why try ... except block is not working here
我正在尝试 运行 使用 try.. except 块跟踪代码:
program TriangleArea;
uses crt, sysutils;
type
num = real;
var
a, b, c, s, area : num;
begin
write('Enter lengths of 3 sides (separated by spaces): ');
try
readln (a, b, c);
s := (a + b + c)/2.0;
area := sqrt(s * (s - a)*(s-b)*(s-c));
writeln(area);
except
on E: Exception do
ShowMessage( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
end.
但它给出了以下错误:
$ fpc triangle_area.pas
Free Pascal Compiler version 3.0.0+dfsg-11+deb9u1 [2017/06/10] for x86_64
Copyright (c) 1993-2015 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling triangle_area.pas
triangle_area.pas(14,2) Error: Identifier not found "try"
triangle_area.pas(15,3) Fatal: Syntax error, ";" expected but "identifier READLN" found
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
为什么找不到 "try" 标识符。我在 Debian 稳定 Linux 上使用 fpc 版本 3.0.0。
问题出在哪里,如何解决?谢谢你的帮助。
将 {$MODE OBJFPC}
或 {$MODE DELPHI}
放在程序声明下方。
原因是编译器默认会在MODE FPC
编译,不支持异常
另一方面,ShowMessage
指令不能用 Free Pascal 编译。正确的代码是:
program TriangleArea;
{$mode delphi}
uses crt, sysutils;
type
num = real;
var
a, b, c, s, area : num;
begin
write('Enter lengths of 3 sides (separated by spaces): ');
try
readln (a, b, c);
s := (a + b + c)/2.0;
area := sqrt(s * (s - a)*(s-b)*(s-c));
writeln(area);
except
on E: Exception do
write( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
end.
稍后编辑:声明 type num=real
是正确的,但我没有看到它有任何实际用途。
我正在尝试 运行 使用 try.. except 块跟踪代码:
program TriangleArea;
uses crt, sysutils;
type
num = real;
var
a, b, c, s, area : num;
begin
write('Enter lengths of 3 sides (separated by spaces): ');
try
readln (a, b, c);
s := (a + b + c)/2.0;
area := sqrt(s * (s - a)*(s-b)*(s-c));
writeln(area);
except
on E: Exception do
ShowMessage( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
end.
但它给出了以下错误:
$ fpc triangle_area.pas
Free Pascal Compiler version 3.0.0+dfsg-11+deb9u1 [2017/06/10] for x86_64
Copyright (c) 1993-2015 by Florian Klaempfl and others
Target OS: Linux for x86-64
Compiling triangle_area.pas
triangle_area.pas(14,2) Error: Identifier not found "try"
triangle_area.pas(15,3) Fatal: Syntax error, ";" expected but "identifier READLN" found
Fatal: Compilation aborted
Error: /usr/bin/ppcx64 returned an error exitcode
为什么找不到 "try" 标识符。我在 Debian 稳定 Linux 上使用 fpc 版本 3.0.0。
问题出在哪里,如何解决?谢谢你的帮助。
将 {$MODE OBJFPC}
或 {$MODE DELPHI}
放在程序声明下方。
原因是编译器默认会在MODE FPC
编译,不支持异常
另一方面,ShowMessage
指令不能用 Free Pascal 编译。正确的代码是:
program TriangleArea;
{$mode delphi}
uses crt, sysutils;
type
num = real;
var
a, b, c, s, area : num;
begin
write('Enter lengths of 3 sides (separated by spaces): ');
try
readln (a, b, c);
s := (a + b + c)/2.0;
area := sqrt(s * (s - a)*(s-b)*(s-c));
writeln(area);
except
on E: Exception do
write( 'Error: '+ E.ClassName + #13#10 + E.Message );
end;
end.
稍后编辑:声明 type num=real
是正确的,但我没有看到它有任何实际用途。