1

Delphi IClientTableインターフェイス(MIDAS.DLL ??)を使用してローカルファイルデータベース(.CDSファイル)を維持するC++アプリケーションがあります。C ++アプリケーション内では、IClientTableはCOleDispatchDriverMFCインターフェイス/オブジェクトです。

私は個人的にこれから完全に離れてSQLiteを使用したいと思っていますが、残念ながら私は現在これを行う立場にありません。

このCOMオーバーヘッドのオープンソースの代替品があるかどうか誰かに教えてもらえますか?単純なDLL、ライブラリ、またはソースファイルのセットをプログラムにコンパイルして、COMインターフェイスを削除したいのですが、これは非常に悲惨なことです。

なぜ私がCOMインターフェースを削除したいのかを本当に知りたいのであれば、それは奇妙なことですが、私たちは10年間問題なく使用してきました。最近、Windows XP Embeddedを使用している顧客を見つけました。何らかの理由で、IClientTable COMディスパッチインターフェイスを使用すると、Windows WM_QUERYENDSESSIONメッセージが吸収されるか、アプリケーションに到達しなくなります。IClientTableインターフェイスの使用を停止すると、WM_QUERYENDSESSIONメッセージが表示されます。

つまり、IClientTable COMディスパッチインターフェイスは、Windowsによるログオフ/シャットダウンの許可を停止しているように見えます。

4

1 に答える 1

1

バイナリのClientDataSetファイルを開く別の方法を知りません。ClientDataSetsはXMLファイル形式も使用できますが、IClientTableインターフェイスでその機能にアクセスできるかどうかはわかりません。

これに気付いていない場合は、ClientDataSetのCOMへの依存関係はDelphi2007またはDelphi2009のいずれかで削除されたと思います。COMの依存関係がClientDataSetに由来する場合は、最近のバージョンのDelphiでラッパーDLLを再コンパイルすると役立つ場合があります。

私の知る限り、どのバージョンのDelphiにもIClientTableのようなものはありません。IClientTableは、ClientDataSetの機能をカプセル化するためにチームによって作成されたラッパーDLLの一部だと思います。そのラッパーDLLを作成した人が、IClientTableインターフェイスをCOMオブジェクトとして公開した場合、これもCOMへの依存の理由の一部である可能性があります。

于 2012-03-30T21:53:08.263 に答える