procedure TForm1.cmdExceptionClick(Sender: TObject);
var
i:Integer;
j:Integer;
m:double;
begin
try
i:=100;
j:=0;
m:=i/j;
showmessage('test');
except
showmessage('error!');
end;
end;
这是一段测试异常处理的代码,令人不解的是,执行后出现的提示居然是“test”,不知何故?
var
i:Integer;
j:Integer;
m:double;
begin
try
i:=100;
j:=0;
m:=i/j;
showmessage('test');
except
showmessage('error!');
end;
end;
这是一段测试异常处理的代码,令人不解的是,执行后出现的提示居然是“test”,不知何故?
解决方案 »
- delhi自带的ado和SDAC控件那个快?我在KBMMW中间层里面使用ADO,好像有(RtlTraceDatabaseEnumerate问题)
- delphi 输出到excel文件后发现19位的账号变成了科学计数的方式,怎么才能按原样输出到excel文件?
- 关于SQL SERVER 2000 中的一个问题
- form空件
- 500分求救,在线等,help!!!!!!!!!!!!!!!!!!!!!!!
- 如何用delphi做这题
- 如何可以用WINDOWFROMPOINT来得到这个WINDOW的HN,如何知道他是可输入筐了?
- 各位做过象 人事管理系统 类的大型软件的大哥们告诉小弟怎么去做。。
- 如何实现:在delphi程序中如何判断是否连接到服务器
- 在BDE里新建了MSSQL类型的别名,然后打开别名旁边的“+”,弹出对话框,要求输入用户名和密码,请问为什么?如何解决?谢了!
- 讨论下DELLPHI的开发模式。说得好的高分送上....
- 请教:如何让IDSMTP和POP3工作时候通过ProgressBar显示进度啊?万分感激
i:Integer;
j:Integer;
m:double;
begin
try
i:=100;
j:=0;
m:=i/j;
edit1.Text := floattostr(m); //在这加一句无关紧要的就可以了
showmessage('test');
except
showmessage('error!');
end;
end;
m:=i/j;
showmessage('test ' + FloatToStr(m));編繹器檢查到你的函數沒用到m, 就邊編繹
i:=100;
j:=0;
m:=i/j;
都沒有了!!
i:Integer;
j:Integer;
m:double;
begin
try
i:=100;
j:=0;
m:=i/j;
showmessage(FloatToStr(m));
except
showmessage('error!');
end;
end;因为你没有显示m的数据的原因吧!
编译程序在编译代码时, 会有一个优化代码的工作(参见《编译原理》)
因此会忽略m:=i/j,在m := i / j ;后面加一句引用m的代码, 为的就是让m:=i/j有效。修改代码:
var
i:Integer;
j:Integer;
m:double;
s: string;
begin
try
i:=100;
j:=0;
m:=i/j;
s := floattostr(m);
showmessage('test');
except
showmessage('error!');
end;
end;
----------------------------------------------------------------
原贴内容:
不行啊!我把edit1.Text := floattostr(m); //在这加一句无关紧要的就可以了换成j:=100;结果还是显示'test'。你的代码在你的环境下可以捕捉到错误吗?