大佬教程收集整理的这篇文章主要介绍了delphi – 为什么我的TStrings对象在析构函数有机会运行之前被销毁?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我希望确保在我的框架被销毁时释放任何相关对象.然而,当我的析构函数运行时,我可以访问组合框,但它的项目已被删除.
怎么会这样?如何访问析构函数中的项?
我的析构函数看起来像这样;
destructor TfraImportAttachments.Destroy; begin messageDlg(IntToStr(cboCategory.Items.count),mTinformation,[mbOK],0); FreeObjects(cboCategory.Items); inherited; end;
组合框Delphi对象仍然存在,但实际控件(通过窗口句柄访问的控件)消失了.通过访问ComboBox.Items,VCL重新创建实际控件,以便它可以检索项目,但是新控件没有任何项目,因此Items.Count返回0.
解决方案是将项目放入组合框和TObjectList,TList或TList< TObject>取决于你想用它们做什么.所以所有权在“代码”列表中,而项目仍在组合框中引用.
以上是大佬教程为你收集整理的delphi – 为什么我的TStrings对象在析构函数有机会运行之前被销毁?全部内容,希望文章能够帮你解决delphi – 为什么我的TStrings对象在析构函数有机会运行之前被销毁?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。