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有关?我该如何释放它呢??
谢谢大家!
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有关?我该如何释放它呢??
谢谢大家!
解决方案 »
- win7客户端提示 interface not supported
- 好问共赏 谨以此文献给所有在学习编程和准备学习编程的朋友当然也包括我 一只很菜很菜的菜鸟
- 这几个问题请指点一下!
- 为什么大家总是用什么什么语言来衡量挣多少钱?
- ADO连接Access2000数据库,由于机器上装的是Access97,Access的驱动是3.5,怎么才能添加4.0呢?
- ORACLE中,怎样取得一个日期的月份?
- 如何更改exe文件的图标?
- 当把一列数据赋给另一列时,怎么源列的数据不见了。
- 请问那里有问题?
- 请问组件和控件的区别,做好是能举例说一下那些是组件,那些是控件
- 请问:设计一个函数,输入日期字符串参数和天数(正表示该日期往后的天数,负表示往前天数),输出计算后的日期
- 系统调用帮助,重分酬谢100分那,只要行,不够在再加
FXMLDoc.Free;
改为:
FreeAndNil(FXMLDoc);试试。————————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
————————————————————————————————————
试过了,不行:(
什么意思?
showmessage怎么拿到dll的定义里面了?
如果FXMLDoc := TDOMDocument30.Create(nil);建立完,什么也不操作,FXMLDoc.Free;没有错误。
如果FXMLDoc建立后进行FXMLDoc.DefaultInterface.load(StrFileName);操作,那么释放时出现地址错误。
问题是否出在FXMLDoc.DefaultInterface?
但是在DLL 释放的时候是不能ShowMessage的
DLL_PROCESS_DETACH:
begin
FXMLDoc.Free;
注掉//if FXMLDoc = nil then
// SHowmessage('ok');
end;
//if FXMLDoc = nil then
// SHowmessage('ok'); --这个也是窗体的
如果真的要消息的话,你用Application.messageBox,看看