删除TDATAMODULE,但保持t曲连接完整



我有一个lib,其中一些tdatamodules共享artoconection。我在某些应用程序中创建并删除数据模块。

当我删除Datamodule时,会遇到一个Eaccessviolation错误。我认为这是由于数据模块要删除tadoconnection的事实,该toconnection被共享。

我尝试将tdatamodule-> tbquery->连接属性设置为destructor时,无运气。

为什么我认为错误存在于t型连接中?因为当我在没有LIB的情况下构建应用程序时,我可以在没有任何问题的情况下创建和删除数据模块。当我使用具有自己连接的数据符号创建一个lib时,我也没有问题。

有帮助吗?预先感谢!

错误:http://oi60.tinypic.com/noyc6x.jpg

呼叫堆栈:http://oi61.tinypic.com/sgljx5.jpg

TDataModule仅释放其拥有的东西。如果您在多个TDataModule实例中共享一个TADOConnection,则他们不能全部拥有它。但是,也许您正在释放所有者,并且没有通知其他实例正在释放TADOConnection。VCL具有用于此目的的机制-TComponent::FreeNotification()方法。您的TDataModule对象可以覆盖虚拟Notification()方法,然后在TADOConnection上调用FreeNotification()。这样,如果TADOConnection曾经释放过,那么使用它的任何TDataModule都可以采取相应的作用,例如将本地指针设置为null,因此他们知道TADOConnection已消失。

解决方案正在使用库或dll添加borlndmm.dll

来自Borland C 建造者的DLL/LIB项目:

//---------------------------------------------------------------------------
//   Important note about DLL memory management when your DLL uses the
//   static version of the RunTime Library:
//
//   If your DLL exports any functions that pass String objects (or structs/
//   classes containing nested Strings) as parameter or function results,
//   you will need to add the library MEMMGR.LIB to both the DLL project and
//   any other projects that use the DLL.  You will also need to use MEMMGR.LIB
//   if any other projects which use the DLL will be performing new or delete
//   operations on any non-TObject-derived classes which are exported from the
//   DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
//   EXE's to use the BORLNDMM.DLL as their memory manager.  In these cases,
//   the file BORLNDMM.DLL should be deployed along with your DLL.
//
//   To avoid using BORLNDMM.DLL, pass string information using "char *" or
//   ShortString parameters.
//
//   If your DLL uses the dynamic version of the RTL, you do not need to
//   explicitly add MEMMGR.LIB as this will be done implicitly for you
//---------------------------------------------------------------------------

相关内容

  • 没有找到相关文章

最新更新