程序Terminate之后,会报出EAccessViolation错误(50分)

W

wmwin

Unregistered / Unconfirmed
GUEST, unregistred user!
使用dhtmledit控件(ie5.0自带,dhtmled.ocx)如下:
如果程序有两个form,主form中有一个dhtmledit控件,form2中有两个
dhtmledit控件,只要在form2的dhtmledit中loaddocument, 程序虽仍然
正常运行,但在程序Terminate之后,会报出EAccessViolation错误,
error in 'dhtmled.ocx' read ffffff ,请问这是为什么?
 
奇怪,我用的这台hp netserver lc3以前出问题,现在居然不出这种问题,但将生成的exe程序拷到别的机器上去运行又出现同样的问题,将工程文件拷过去也一样出问题
 
ocx控件没有注册
 
ocx控件没有注册,没注册怎么能用呢?

 
可能是create中出的问题。类要用 aTClass := TClass.create(...)来创建。
 
aTClass := TClass.create(...)来创建,动态创建吗?
好像还时没有用。
 
我在PB下调用.ocx也遇到这种问题.
不访问控件的属性或方法还好,一访问就会在退出时
出错.
 
应该是这个控件本身的问题巴,问问微软,如何?
 
很可能,此控件本不适合在delphi下使用,bug多多(如无法实现拖放功能)。
 
是不是跟参数传递方式不同呢?比如该控件到底使用safecall,pascal,cecdl,stdcall中
的那一个呢!
 
不会吧, 该控件的MsDhtml_lib.pas接口文件已定义好为safecall了,
怎么能改变呢?
 
其实我也不清楚,我回答人问题在Delphi4下编写的一个ActiveForm在Delphi4上
运行正常,可在Delphi5下却出现你的那中现象。不过只是在程序退出是才出现。
我调试过退出程序的汇编代码,好象是Delphi对某一个对象释放两次。

如果你实在没有办法找出原因,可以在MainForm的Destroy用ExitProccess(0);退出
,用此法应该可以避免出现异常。
 
ExitProccess(0)?能详细说一下吗?
 
多人接受答案了。
 
http://202.120.85.61/delphibbs/DispQ.asp?LID=440708
 
顶部