使用三方组件时遇到一个问题,高手请指教!谢谢!

BigAngell 2004-10-28 10:48:39
为什么在使用了三方组件后,程序在关闭的时候总是要执行三方组件的一些代码,然后才完全退出;有时候正是因为如此而导致出错!

例如:MainForm.Close;
Application.Terminate;
然后程序还是执行一些代码,这个时候我的程序就出错了,系统报什么“.EXE遇到问题需要关闭”,这是在XP下常见的问题,但将这个程序拿到2K下却很少出现这种错误,更可笑的是,我在Close之后新建了一个窗体,且此窗体ShowMode,在等待几秒后再关闭,整个程序就正常了,晕死!

请问:1、如何在退出时不再执行三方组件的代码?
2、是不是所有三方组件都是这样?为什么Delphi自身的控件就没有这个问题呢?
3、在写组件的时候如何让自己组件不出现以上问题呢?
...全文
147 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_yang 2004-10-29
  • 打赏
  • 举报
回复
我是这样做的:
try
Form_Login:=TForm_Login.Create(Application);
if Form_Login.bFileFound then
Form_Login.ShowModal;
except
on E:Exception do
begin
MessageDlg(E.Message,mtError,[mbok],0);
Form_Login.ModalResult:=mrCancel;
end;
end;
if Form_Login.ModalResult<>mrOK then
begin
Form_Login.ServerDisConnect;
FreeAndNil(Form_Login);
FreeAndNil(PubData);

Halt;
end;

已经我也出现楼主说的问题,这样做之后就没事了。
victor_yang 2004-10-29
  • 打赏
  • 举报
回复
试试在Application.Terminate;之前FreeAndNil(MainForm);
包括所有之前打开过的Form都这样释放。
BigAngell 2004-10-29
  • 打赏
  • 举报
回复
★★为什么Delphi自身的控件没有以上问题呢?★★

我想请大家看清楚这句话:...更可笑的是,我在Close之后新建了一个窗体,且此窗体ShowMode,在等待几秒后再关闭,整个程序就正常了,晕死!

这是为何呢?希望得到有针对性的回答,谢谢!
potee 2004-10-29
  • 打赏
  • 举报
回复
看一下写的关于第三方组件的代码是否正确
如果正确那是组件自身的原因
pandengzhe 2004-10-29
  • 打赏
  • 举报
回复
路过。。。。
zfang 2004-10-29
  • 打赏
  • 举报
回复
路过,关注一下
GoldShield 2004-10-29
  • 打赏
  • 举报
回复
任何一个程序退出的时候它都要释放它所占有的资源,当然也包括三方组件.你自己写的也必须释放,只是由你自己控制了释放了位置与时间而已.
victor_yang 2004-10-29
  • 打赏
  • 举报
回复
写控件的时候并没有考虑到使用时候的情况,因为情况太多了,但基本方向就是,如果要强行退出就要先将之前创建的先释放,最好是FreeAndNil,本人强烈推荐。
BigAngell 2004-10-29
  • 打赏
  • 举报
回复
TO: victor_yang(victoryang)

我试过了,好像的确可行,但本人却不知道它们倒底起个什么用?那个方法都进行了什么操作呢?会不会对程序本身有什么影响?
aiirii 2004-10-28
  • 打赏
  • 举报
回复
1、如何在退出时不再执行三方组件的代码?
不大可能的, 這樣做是不對的, 組件也要釋放自己占用的內存, 不執行, 錯誤更多

2、是不是所有三方组件都是这样?为什么Delphi自身的控件就没有这个问题呢?
這是兼容性問題了, 看你用的是什麼類似的

3、在写组件的时候如何让自己组件不出现以上问题呢?
測試了, 在各種平台下測試
yinzhiw 2004-10-28
  • 打赏
  • 举报
回复
直接用Halt函数看它还行不行

^_^

不提倡用第三方控件
aishenghuoailafang 2004-10-28
  • 打赏
  • 举报
回复
我看就不分开回答你的三个问题了吧。

不知道你有没有控件的源程序?
如果有,查看一下,第三方组件的

Destroy事件中的代码,和finailization区域的代码。
在程序关闭的时候,总是要执行这些代码的。
------------------------------------
《CSDN论坛新助手 CSDN's forum Explorer》,支持最新改版论坛,回复、浏览“方便”,“快捷”! 下载地址:http://www.seeyou.com.cn/CoolSlob/CSDNExplorer.exe
lyguo 2004-10-28
  • 打赏
  • 举报
回复
我也遇到了三方控。。。。

5,379

社区成员

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

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