关于DataModule

fantom 2002-04-03 04:50:58
我想在Dll中的各个窗口中共用一个DM
但在加上一个DM后却没有自动创建
在form中写上如下,可以用,但在退出时却出错
(Delphi下出错,Win下不出错,但是减少内存)
//Dll Form
initialization
if not Assigned(Dmmain) then DMMain :=TDMMain.Create(Application);
finalization
if Assigned(Dmmain) then
begin
DMMain.Free;
end;

怎么办呢
...全文
72 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
panyiming 2002-04-03
  • 打赏
  • 举报
回复
不需要自己手动调用,DLL卸载时会自动Free,不相信可以在DMMain.OnDestroy中写点代码,然后调试再一下看,结果是会执行到OnDestroy的!
chechy 2002-04-03
  • 打赏
  • 举报
回复
写成nil,就不应该出错了。
要么你改成这样:
FreeAndNil(DmMain);
fantom 2002-04-03
  • 打赏
  • 举报
回复
写不写都有错啊,最先我就用nil,一样的错误
chechy 2002-04-03
  • 打赏
  • 举报
回复
finalization部分不用写了。因为你在Create的时候,指定了Owner是Application,Application在结束的时候已经替你释放掉了。
如果你非要finalization部分,那么前一句改成这样:
if not Assigned(Dmmain) then DMMain :=TDMMain.Create(nil);

5,385

社区成员

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

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