2012-03-29 2 views
1

私は、歴史的に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のログオフ/シャットダウンを許可しないように見えます。

答えて

1

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

あなたはこのことを認識していなかった場合は、既にCOMにClientDataSetのの依存性がIで削除されましたが、デルファイの最近のバージョンでは、あなたのラッパーDLLを再コンパイルのDelphi 2007またはデルファイ2009のいずれかが役立つかもしれないと思う、場合COMの依存関係が来ますClientDataSetから取得します。

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

+0

はい、IClientTableは、私たちのチームがTClientDataSet Delphiクラス用に作成したラッパーです。私はDCOMが削除されたと言われています(??)しかし、私がMidasのために持っているソースは、まだCOMを使用していることを示しています。私は修正されたMidas.dllからDLL関数を公開するアイディアを持っていますが、とにかくTClientDataSetクラスによって作業が行われます。私たちはClientDataSetを使用することを余儀なくされるでしょう。 – SparkyNZ

+0

実際には、独自のCDバイナリ形式のパーサーを書くのは難しくありません。私はハイパーベース – vavan

+0

True Vavanに基づいた自分のmidasバージョンでそれを行いました。個人的には、単にCDSを完全にダンプして、私たちが持っているものだけを取り除くことを好みます。差し迫ったリリースに先立ち、プロジェクトの後半。私は実際にWinDbgのようなツールでこれを突き止める能力を持っているので、問題の原因は何も疑問はありません。しかし、私はSendMessage APIコールをカーネルデバッガ.. – SparkyNZ

関連する問題