ActiveForm在IE中的DAX ERROR

kuneo 2004-04-19 10:57:25
创建的ActiveForm在IE中多次使用出现DAX ERROR: Access Violation的问题。
在2k和XP中。

这个问题屡次出现,CSDN中对这个问题进行了多次讨论。

很多人说在ActiveForm的Close事件中加入action := cafree;
但是ActiveForm没有Close事件:(

Borland对此有证明回答:
Fix Delphi ActiveX DAX error : access violation using IE
http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18656

但是,我还是想搞清楚action := cafree;的搞法,呵呵
特别是邀请nhdj(柳柳荷叶清清水)回答,100分相送:)
...全文
581 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
leon528 2004-09-21
  • 打赏
  • 举报
回复
难道只有放弃delphi才是唯一出路?
chaoren 2004-09-21
  • 打赏
  • 举报
回复
怎么没有人来解决呀
我都崩溃了
zzlong 2004-09-19
  • 打赏
  • 举报
回复
up
chaoren 2004-09-19
  • 打赏
  • 举报
回复
我就是用的d7
经常会出现这种问题,头都大了
傻乐tao 2004-07-08
  • 打赏
  • 举报
回复
红着脸说: 兄弟,分还没给呢
kuneo 2004-07-07
  • 打赏
  • 举报
回复
D7“取消第三方扩展”在有些情况下确实可以解决问题。
反观种种现象,发现:

如果是PackingWindow所造成的DAX Error,由于其出错原理,出错不会“百发百中”,但是多试几次就会出现。Borland论坛的问题应该可以奏效。

若如果一个ActiveForm控件,在某些人的机器上,总是出现Dax Error而在其他的机器上总是不,很有可能不是PackingWindow的错。这时候,建议大家怀疑IE的插件。插件与你的Ax兼容性可能存在问题(我估计这一点atl的控件和dax控件一样)。

诸位可以按照HorkyTao的方式关闭插件重试

目前发现兼容性问题的插件有:
1. MSN Helper (Faint, MS的东西)

没问题的插件有:
1. Google Toolbar

MSN Helper屡试不爽,建议有兴趣的兄弟找找兼容性问题的原因。

结贴:分全给HorkyTao, 感谢他的深入研究。
傻乐tao 2004-07-06
  • 打赏
  • 举报
回复
我来综合回答大家问题吧!
1、如果你是用d5 / d6开发的话,请参见http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18656

axctrls.pas

function ParkingWindow: HWND;
var
TempClass: TWndClass;
ParkingName : String;
begin
Result := xParkingWindow;
if Result <> 0 then Exit;

// fix Dax error : accessviolation (win2k, win xp)
ParkingName := 'DAXParkingWindow_' + Format('%p', [@ParkingWindowProc]);

FillChar(TempClass, sizeof(TempClass), 0);
if not GetClassInfo(HInstance, PChar(ParkingName), TempClass) then // fix Dax error : accessviolation (win2k, win xp)
begin
TempClass.hInstance := HInstance;
TempClass.lpfnWndProc := @ParkingWindowProc;
TempClass.lpszClassName := PChar(ParkingName); // fix Dax error : accessviolation (win2k, win xp)
if Windows.RegisterClass(TempClass) = 0 then
raise EOutOfResources.Create(SWindowClass);
end;
xParkingWindow := CreateWindowEx(WS_EX_TOOLWINDOW, TempClass.lpszClassName, nil,
WS_POPUP, GetSystemMetrics(SM_CXSCREEN) div 2,
GetSystemMetrics(SM_CYSCREEN) div 2, 0, 0, 0, 0, HInstance, nil);
SetWindowPos(xParkingWindow, 0, 0, 0, 0, 0, SWP_NOACTIVATE or SWP_NOREDRAW
or SWP_NOZORDER or SWP_SHOWWINDOW);
Result := xParkingWindow;
end;
即修改axctrls.pas 文件,并重新编译
2、在D7这样是不能解决问题的,而且Activeform也没有OnClose事件!但这样的问题一般都是出现在装了第三方IE Addin的机器上,只要你将 IE的 工具->选项->高级->浏览 里的"启用第三方扩展"勾 uncheck就可以了。
Taken 2004-06-29
  • 打赏
  • 举报
回复
我也遇到这个问题了,还不知道怎么解决,http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18656
打不开了,请问大家用什么方法解决的?
bessxq 2004-06-27
  • 打赏
  • 举报
回复
ding
TomSonChina 2004-04-30
  • 打赏
  • 举报
回复
haze_cui 2004-04-30
  • 打赏
  • 举报
回复
haze_cui 2004-04-29
  • 打赏
  • 举报
回复
to kuneo(KuNeo)
我试过了,还是不行。

能否借你的.pas和.duc过来用用? 我的mail cuilishan@21cn.com

我现在用的是一个空的form,新建的,什么都没加。
运行顺序:先运行一个空的ie,再开两个我的ie,然后关掉第一次运行的我的ie,再运行一次我的ie,就会出错了。
你的问题和我的一样吗?
haze_cui 2004-04-29
  • 打赏
  • 举报
回复
nhdj怎么还不出现
haze_cui 2004-04-27
  • 打赏
  • 举报
回复
to kuneo(KuNeo)
按照http://codecentral.borland.com/codecentral/ccweb.exe/listing?id=18656
上的说法,你的问题解决了吗?
我的怎么不行?
我用的是D7
kuneo 2004-04-27
  • 打赏
  • 举报
回复
kuneo 2004-04-27
  • 打赏
  • 举报
回复
kuneo 2004-04-27
  • 打赏
  • 举报
回复
To haze_cui()
问题解决了,你编译的.dcu需要放到<Program files>\Borland\Delphi7\Lib下,
但是需要注意,Delphi默认配置,是取\lib\debug下的.dcu,你要把那个也替换一下。

我认为Delphi 7不能不改这个明显的bug,可能还是我们的调用方法部队,
所以非常想nhdj把他的方法讲清楚。

呵呵,大家一起顶啊,我先顶两个。
haze_cui 2004-04-27
  • 打赏
  • 举报
回复
再顶
haze_cui 2004-04-27
  • 打赏
  • 举报
回复
?没人回复了吗
kuneo 2004-04-26
  • 打赏
  • 举报
回复
顶啊,知道的帮忙啊!
加载更多回复(6)

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧