这段代码有什么问题(50分)

  • 主题发起人 主题发起人 爱如泣血
  • 开始时间 开始时间

爱如泣血

Unregistered / Unconfirmed
GUEST, unregistred user!
初学,望赐教。
********************************************
procedure TForm1.Button1Click(Sender:Tobjedt);
var
i,x,y:Integer;
begin
x:=1;
y:=0;
try
i:=x/y;
except
ShowMessage('Can''t devide by zero!');
end;
end;
*****************************************************************
这里编译出错i:=x/y;
如果改为i:=(x)div(y);
则又没有意义。不知错在什么地方?望指点。
 
零作了除数。
 
就是故意用零做除数抛出异常呀。
 
整性数相除i:=x/y不行的,必须i:=x div y。为什么没有意义?你是什么意思?
 
兄弟
div是用在整数的
/是用在extended;
你将
i,x,y:Integer;
改为
i,x,y:extended;
就行了
 
var
i:extended;
x,y:Integer;
begin
x:=1;
y:=0;
try
i:=x/y;
except
ShowMessage('Can''t devide by zero!');
end;
end;
就可以了。
 
这涉及到编译原理方面的问题,你的零做除数抛出异常,编译的时候会认为不合法,我是这样认为的.try except end;这个异常快,大多检测程序中潜在的错误,你直接用零做除数,编译的时候它应该会检测到这是个错误.
 
wqhatnet:
可是这样的话try没有捕获异常呀。并没有执行ShowMessage();
 
结合一下wqhatnet和hygsxy的就对了。
谢谢了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
780
import
I
I
回复
0
查看
629
import
I
后退
顶部