私は、歴史的にDelphi IClientTableインターフェイス(MIDAS.DLL ??)を使ってローカルファイルデータベース(.CDSファイル)を管理するC++アプリケーションを持っています。私たちのC++アプリケーション内では、IClientTableはCOleDispatchDriver MFCインターフェイス/オブジェクトです。CDSクライアントデータセットファイル - これらを操作する別の方法がありますか?
私は個人的にこれを離れてSQLiteを使用したいと思いますが、残念ながら私は今これを行う立場にはありません。
このCOMオーバーヘッドのオープンソースの置き換えがあるかどうか教えていただけますか?私は単純なDLL、ライブラリ、またはソースファイルのセットを私のプログラムにコンパイルして、私に非常に悲しみの原因となっているCOMインターフェイスを取り除きたいと思います。
本当に私がCOMインターフェイスを取り除きたい理由を知りたいなら - それは奇妙なことですが、問題なく10年間それを使用しました。最近、Windows XP Embeddedを使用している顧客が見つかりました。何らかの理由でIClientTable COMディスパッチインターフェイスを使用すると、Windows WM_QUERYENDSESSIONメッセージが吸収されるか、アプリケーションに届かなくなります。 IClientTableインターフェイスの使用をやめると、WM_QUERYENDSESSIONメッセージが表示されます。
要するに、IClientTable COMディスパッチインターフェイスは、Windowsのログオフ/シャットダウンを許可しないように見えます。
はい、IClientTableは、私たちのチームがTClientDataSet Delphiクラス用に作成したラッパーです。私はDCOMが削除されたと言われています(??)しかし、私がMidasのために持っているソースは、まだCOMを使用していることを示しています。私は修正されたMidas.dllからDLL関数を公開するアイディアを持っていますが、とにかくTClientDataSetクラスによって作業が行われます。私たちはClientDataSetを使用することを余儀なくされるでしょう。 – SparkyNZ
実際には、独自のCDバイナリ形式のパーサーを書くのは難しくありません。私はハイパーベース – vavan
True Vavanに基づいた自分のmidasバージョンでそれを行いました。個人的には、単にCDSを完全にダンプして、私たちが持っているものだけを取り除くことを好みます。差し迫ったリリースに先立ち、プロジェクトの後半。私は実際にWinDbgのようなツールでこれを突き止める能力を持っているので、問題の原因は何も疑問はありません。しかし、私はSendMessage APIコールをカーネルデバッガ.. – SparkyNZ