释放对象

xin_qing0 2010-06-28 01:19:51
我写了一个带FORM的DLL,放到主程序下面被调用,当关闭主程序后,资源管理器中主程序仍然在运行,需要在资源管理器里再将主程序关闭,为什么会出现这种情况,是因为我DLL里有对象没有释放掉?

我是这么写的:

frmTest := nil;
try
frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
...全文
275 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
ddzjok 2010-07-01
  • 打赏
  • 举报
回复
dll应该没问题,可能是别的程序的问题吧。
nkym0626 2010-07-01
  • 打赏
  • 举报
回复
顶起来
xin_qing0 2010-06-30
  • 打赏
  • 举报
回复
问题还是没解决,主程序仍需在资源管理器里关闭
xjwy 2010-06-30
  • 打赏
  • 举报
回复
还有什么呢问题那?这个帖子现在还在?
xin_qing0 2010-06-30
  • 打赏
  • 举报
回复
自己顶,呵呵
starluck 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用楼主 xin_qing0 的回复:]
我写了一个带FORM的DLL,放到主程序下面被调用,当关闭主程序后,资源管理器中主程序仍然在运行,需要在资源管理器里再将主程序关闭,为什么会出现这种情况,是因为我DLL里有对象没有释放掉?

我是这么写的:

frmTest := nil;
try
frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
fi……
[/Quote]

Application.createForm 第一个建立的FORM是哪一个?
右脚小拇指 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xin_qing0 的回复:]
谢谢!
frmTest := nil;
FreeAndNil(frmTest);

中间没有Create,会有问题吗
[/Quote]


不会有问题, FreeAndNil 函数内部自己也会判断处理
xin_qing0 2010-06-29
  • 打赏
  • 举报
回复
我没有用ShowMadal,因为from上显示的是一张报表,用QUICKREPORT做的,所以我直接用frmTest.QuickRep1.Preview;
vincent_cheung 2010-06-29
  • 打赏
  • 举报
回复
1、ShowMadal改为Show
2、在frmTest OnClose下写代码释放frmTest内所有资源
3、在frmTest OnClose下Action:=CaFree;

三个方法,我没测过,你自己试一下,测完记得把结果发上来
newfang 2010-06-28
  • 打赏
  • 举报
回复
关键不是这点儿代码,还有主程序调用dll那里,看你是怎么写的……
xin_qing0 2010-06-28
  • 打赏
  • 举报
回复
还是自己顶
xin_qing0 2010-06-28
  • 打赏
  • 举报
回复
谢谢!
frmTest := nil;
FreeAndNil(frmTest);

中间没有Create,会有问题吗
xjwy 2010-06-28
  • 打赏
  • 举报
回复

try
if not Assigned(frmTest) then frmTest := TfrmTest .Create(nil);
frmTest.ShowModal;
finally
FreeAndNil(frmTest);
end;
这样好些。
xin_qing0 2010-06-28
  • 打赏
  • 举报
回复
自己顶
xin_qing0 2010-06-28
  • 打赏
  • 举报
回复
如果我没有frmTest := TfrmTest .Create(nil);
而是frmTest := nil; 接着直接FreeAndNil(frmTest);

这样是不对的吧
xin_qing0 2010-06-28
  • 打赏
  • 举报
回复
from上显示的一张报表,用QUICKREPORT做的,frmTest.ShowModal 应该改为frmTest.QuickRep1.Preview;
调用完应该走 finally
FreeAndNil(frmTest);
end;
主程序的代码我是看不见的,
是动态调用
亮剑_ 2010-06-28
  • 打赏
  • 举报
回复
DLL是静态调用还是动态加载,程序退出时是如何处理的
bdmh 2010-06-28
  • 打赏
  • 举报
回复
关闭时干吗了,dll是否释放,是否执行了死循环

5,388

社区成员

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

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