program Project1;uses
windows;begin
try
asm
int 3
end;
except
messagebox(0, 'Got interrupt point', '', MB_OK);
end;
end.运行程序(不要在IDE环境下运行)windows弹出“发送错误报告”对话框,点不发送后弹出“runtime error 255”错,except部分根本就没有执行,这是怎么回事?
windows;begin
try
asm
int 3
end;
except
messagebox(0, 'Got interrupt point', '', MB_OK);
end;
end.运行程序(不要在IDE环境下运行)windows弹出“发送错误报告”对话框,点不发送后弹出“runtime error 255”错,except部分根本就没有执行,这是怎么回事?
解决方案 »
- Delphi的三层结构的问题
- 请问中国内地有买 quick report 软件的买
- 有开发过电子印章的高手吗?
- 怎样调用 TDataModule中的数据库控件才是 正确的???
- 大家来救急啊!delphi6中fastnet在7中没有,怎么把fastnet加到7中啊??
- 关闭窗体,显示提示信息方面
- 【CSDN怎么了?试了N次都无法回复成功!】发贴哀悼
- 请教高手啊
- 數據集中當前指針的記錄號不是RecNo嗎,為什麼我得到的值總是-1呢,為什麼
- 十分着急问一个在delphi 2007下,indy 10 的idhttp 的一个post的问题!
- 用adoquery如何获得与之相连接的表的字段名称
- 访问adoquery字段值的参数问题?
我加了一句uses SysUtils;就没出错了。
由于特殊需求,不能uses SysUtils(原因很简单,这玩艺太大了)。 现在的问题就变成如何在不加载SysUtils的情况下使用try...except? 我尝试过设置system中的ExceptProc和ErrorProc,结果都不起作用(这点比较奇怪,SysUtils的Initialization部分也不过就是设置了这几个变量把它指向SysUtils中的异常处理模块而已,为什么到我这就不行了呢?)。 难道一定要自己用汇编来处理SEH?
----------------------------------------------------
Exception is the base class for all runtime exceptions.Unitsysutils
...
asm
push ExceptHandle // excepthandle 就是异常处理函数
push dword ptr fs:[0]
mov fs:[0], esp
end;
... // 要try的代码
...
asm
pop eax
mov fs:[0], eax
pop eax
end;
...function ExceptionHandle(ExceptRecord, ExceptPoint, ExceptContext, Param: Pointer): Cardinal; stdcall;
begin
{ 异常处理函数,具体结构可以参阅MSN有关SEH的说明 }
end;我想知道的就是如何仍然利用Delphi的关键字try...except来使用异常而不用写一堆汇编代码。
你想直接跳入中断? 这样出错,感觉才合理, 系统级的错误了
在程序被Debug的时候是会通知调试器的不带SysUtils,就得自己处理SEH哦