关于try...except(30分)

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

爱如泣血

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
i:extended;

begin
x:=1;
y:=0;
i:=0;
try
try
i:=x/y;
except
showmessage('can not divide by zero');
end;
finally
i:=0;
end;
请问为什么不会弹出对话框显示'can not divide by zero!'
 
這樣就ok了
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
i:extended;
begin
x:=1;
y:=0;
i:=0;
try
i:=x/y;
except
showmessage('can not divide by zero');
i:=0;
end;//try
end;
 
示'can not divide by zero!'
不能除0啊!
 
试过了。同样不行呀。
 
我想楼主的
try
try
是笔误吧?可能delphi把x/y自动设为0 了
 
楼主,由于你的变量i在实际运行过程中根本没有起作用,所以 i:=x/y 这句根本没有执行,那么相应的 try .. except 也就没有执行,不弹出对话框也就很正常了。
可以试试在finally里加入这样一句: label1.caption :=floattostr(i)。这样就达到你要的目的了。
 
同意楼上的....
 
因为你的i:=x/y产生的值没有使用,所以编译器对代码进行了优化,根本就没有编译你的i:=x/y这一句。
你试试这样:
var
x,y:integer;
i:extended;

begin
x:=1;
y:=0;
i:=0;
try
try
i:=x/y;
except
showmessage('can not divide by zero');
end;
finally
caption:=floattostr(i);
end;
 
楼主该不是在delohi开发环境中运行吧?如果这样肯定不会报你抛出的异常。
 
我想这样就可以了吧
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
i:extended;

begin
x:=1;
y:=0;
i:=0;
try
i:=x/y;
except
begin
showmessage('can not divide by zero');
exit;
end;
end;
i:=0;
end;
 
try
edit3.Text:=floattostr(strtoint(edit1.text)/strtoint(edit2.text));
except
showmessage('error');
edit3.text:='0';
end;
 
在showmessage处设置端点,如果调试时没有进入就说明被优化了(默认就是这样)。如果被优化的话,在Project Options中的Compiler页内,取消Optimization就可以了。
 
各位大哥,还是不行呀。
请各位试过了吗?求求了,明天要交了。
谢谢。
 
统一fishjam的话,设置断点
 
except
showmessage('error');
不对的,你看一下帮助文件,应该是E:ERRDATA.MESSAGE('ERROR').
我忘了该怎么写,我不在家,在EXCEPT中是判断返回的值是什么时回答对话框,你不能直接写
SHOWMESSAGE,你先不写内容,看它报什么错,再在EXCEPT中加入
 
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
i:extended;

begin
x:=1;
y:=0;
i:=0;
try
try
i:=x/y;
except
showmessage('can not divide by zero');
end;
finally
caption:=floattostr(i);
end;
end;
肯定是对的啊!
 
这个小程序我打包放在网上了
楼住快点看看吧,明天我就要把他删了
http://qiangzhe.8u8.com/123.rar
 
procedure TForm1.Button1Click(Sender: TObject);
var
x,y:integer;
i:extended;
begin
x:=1;
y:=0;
i:=0;
try
try
i:=x/y;
except
showmessage('can not divide by zero');
end;
finally
//@@@@@@@@@@@
end;
End;
 
maozhuxi不要骗我了。到底是怎么做的?
是不是可执行文件与工程文件不一样??

 
这个问题已近说明白了,咳。
 

Similar threads

I
回复
0
查看
555
import
I
I
回复
0
查看
538
import
I
I
回复
0
查看
821
import
I
I
回复
0
查看
504
import
I
顶部