我有一个C ++应用程序,历史上使用Delphi IClientTable接口(MIDAS.DLL ??)来维护本地文件数据库(.CDS文件)。在我们的C ++应用程序中,IClientTable是一个COleDispatchDriver MFC接口/对象。
我个人想完全放弃使用SQLite,但不幸的是我现在无法做到这一点。
有人可以告诉我是否有这个COM开销的开源替换?我想要一个简单的DLL,库或一组源文件编译到我的程序中去掉COM接口,这让我非常悲痛。
如果你真的想知道我为什么要摆脱COM界面 - 它很奇怪 - 我们已经使用了10年没有问题。最近我们找到了一个使用Windows XP Embedded的客户,出于某种原因,当我们使用IClientTable COM调度接口时,这会导致Windows WM_QUERYENDSESSION消息被吸收,或者不再到达我的应用程序。在我停止使用IClientTable接口的那一刻,我收到了WM_QUERYENDSESSION消息。
简而言之:IClientTable COM调度接口似乎阻止Windows被注销/关闭。
答案 0 :(得分:1)
我不知道有任何其他方法可以打开二进制ClientDataSet文件。 ClientDataSets也可以使用XML文件格式,但我不知道您的IClientTable接口是否允许您访问该功能。
如果您还没有意识到这一点,我认为ClientDataSet对COM的依赖性已被删除,无论是Delphi 2007还是Delphi 2009.在最新版本的Delphi中重新编译包装DLL可能有所帮助, if COM依赖项来自ClientDataSet。
据我所知,在任何版本的Delphi中都没有IClientTable这样的东西。我猜测IClientTable是团队编写的封装DLL的一部分,用于封装ClientDataSet的功能。如果编写该包装DLL的人将IClientTable接口公开为COM对象,这也可能是您依赖COM的原因之一。