接管程序的OnException?接管窗体的OnException? 接管整个应用程序的写法是这样的:application.OnException := MyException有没有办法截获当前窗体抛出的异常? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 窗体没有直接的OnException事件,只能按过程/函数自行try..except 这个是 Application的。 你可以在写入的时候, 判断下 ActiveForm 接管窗体的OnException是无法实现的,你接管Application.OnException是因为发生异常就会触发哪个事件,而且从技术上来说,也无法判断发生的异常是属于哪个窗体的。 有一个解决办法就是得到发生异常的类名,参考一下FastMM抓异常的代码,首先是抓到出异常的堆栈,获取堆栈异常地址的代码是:procedure GetStackAddress(var AStackTop, AStackBottom: Cardinal);begin asm mov ecx, FS:[4]; //FS:[4]放置发生异常时的栈信息 sub ecx, 3; mov [eax], eax; //栈顶,eax接收第一个参数 mov [edx], ebp; //栈低,edx接收第二个参数 end;end;具体的可以参考FastMM 关于MouseDown事件的奇怪问题 无聊,1天1散分... 如何读写excel文件,请各路高手指点 如何添加 将字符串转化为浮点数?急! 语音报帐!500分相送! 求助:StringToWideChar的用法 急寻Delphi6的两个补丁!! 把string类型转为char如何转假设string类型的长度为1 如何在quickrep中把band竖立? TAdvGlowButton怎么是隐形控件吗? 想作一个像查询分析器那样的东西,请高手帮忙
这个是 Application的。 你可以在写入的时候, 判断下 ActiveForm
begin
asm
mov ecx, FS:[4]; //FS:[4]放置发生异常时的栈信息
sub ecx, 3;
mov [eax], eax; //栈顶,eax接收第一个参数
mov [edx], ebp; //栈低,edx接收第二个参数
end;
end;具体的可以参考FastMM