大家帮我看看这个dll吧 -_-! (关于dll初始化和释放)

zzh54zzh 2003-08-21 02:26:31
dll初始化和释放……

……
procedure MyDLLHandler(Reason: Integer);
begin
case Reason of
DLL_PROCESS_ATTACH:
begin
FXMLDoc := TDOMDocument30.Create(nil);
end;
DLL_PROCESS_DETACH:
begin
FXMLDoc.Free;
if FXMLDoc = nil then
SHowmessage('ok');
end;
DLL_THREAD_ATTACH:;
DLL_THREAD_DETACH:;
end;
end;
……
begin
DLLProc := @MyDLLHandler;
MyDLLHandler(DLL_PROCESS_ATTACH);
end.

问题:只要一执行FXMLDoc.Free;就出现地址错误。不释放又不行。该怎样处理?
如果声明的是TStringList的实例,释放时(….free)就没有错误。是不是和TDOMDocument30有关?我该如何释放它呢??
谢谢大家!
...全文
40 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
overtime 2003-08-22
  • 打赏
  • 举报
回复
设断点看看呀
//if FXMLDoc = nil then
// SHowmessage('ok'); --这个也是窗体的
如果真的要消息的话,你用Application.messageBox,看看
DWGZ 2003-08-22
  • 打赏
  • 举报
回复
其它问题我不知道
但是在DLL 释放的时候是不能ShowMessage的
DLL_PROCESS_DETACH:
begin
FXMLDoc.Free;
注掉//if FXMLDoc = nil then
// SHowmessage('ok');
end;
zzh54zzh 2003-08-21
  • 打赏
  • 举报
回复
有了一些眉目:
如果FXMLDoc := TDOMDocument30.Create(nil);建立完,什么也不操作,FXMLDoc.Free;没有错误。
如果FXMLDoc建立后进行FXMLDoc.DefaultInterface.load(StrFileName);操作,那么释放时出现地址错误。
问题是否出在FXMLDoc.DefaultInterface?
zzh54zzh 2003-08-21
  • 打赏
  • 举报
回复
我只是看一下它有没有释放,ok,删去 if FXMLDoc = nil then SHowmessage('ok'); 也照样报错。 谢谢大家。
sy_315 2003-08-21
  • 打赏
  • 举报
回复
支持dwgz
showmessage怎么拿到dll的定义里面了?
zzh54zzh 2003-08-21
  • 打赏
  • 举报
回复
>>DWGZ()
什么意思?
DWGZ 2003-08-21
  • 打赏
  • 举报
回复
ShowMessage干掉!
zzh54zzh 2003-08-21
  • 打赏
  • 举报
回复
>> lxpbuaa(桂枝香在故国晚秋)
试过了,不行:(
lxpbuaa 2003-08-21
  • 打赏
  • 举报
回复
uses SysUtils;


FXMLDoc.Free;
改为:
FreeAndNil(FXMLDoc);

试试。

————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————

5,388

社区成员

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

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