3

私たちは Delphi で計算コアをゼロから書き直しており、他の人がそれに対してコードを書けるようにする方法を探しています。

自動化は、これを行うためのかなり安全な方法のようです。私たちが考えている用途の 1 つは、VBA/Office で使用できるようにすることと、.NET アセンブリを生成することです (Automation オブジェクトに基づいているので簡単です)。

ただし、コードは Delphi から簡単に使用できるはずです。これを使用して(デスクトップ)UI を作成するからです。

現在、Delphi でオートメーション サーバーを作成することを検討していますが、タイプ ライブラリ ウィザードでコンポーネントを設計し、ベース コードを生成するのはかなり面倒に思えます。

私たちが実装しなければならない計算は、まだ承認されていない公式の規則と規制に記載されているため、完了する前に変更される可能性があります。最終版を待つという選択肢はありません。

別の方法として、最初にオブジェクト モデル全体を完成させ、最上位オブジェクト switch のみを記述する別のオートメーション サーバーを作成し、$METHODINFO ONTObjectDispatch を使用してすべての下位オブジェクトを返すこともできます。 私が見たように、IDispatch インターフェイスによってオブジェクトを返すラッパーを作成する必要があります。そこには 100 を超えるさまざまなクラスがあるため、魅力的なオプションとは思えません。 編集: TObjectDispatch は、プロパティやメソッドによって返されるオブジェクトもラップできるほどスマートです。そのため、最上位のオブジェクトのみをラップする必要があります。ただし、完全なタイプ ライブラリがないということは、レイト バインディングしかできないということです。

Delphi で COM アクセス可能なオブジェクト モデルを作成するための、他の簡単な (読み: 手間のかからない) 方法はありますか?

4

2 に答える 2

2

タイプ ライブラリ デザイナーを使用する必要はありません。(たとえば、Delphi クラスの RTTI から).ridl ファイルを作成または生成し、オートメーション ライブラリ プロジェクトに追加できます。

于 2010-06-22T14:51:33.213 に答える
0

RTTIからインターフェイス記述を生成することは素晴らしいアイデアです!インターフェイスを生成したら、それらからdelphiユニットを生成し、クラスに実装できます。もちろん、これらのクラスからインターフェイスを生成したので、大部分はすでに実装されています。その後、RTTIを使用し、スクリプト可能なクラスの共通の基本クラスにIDispatchとIDispatchExを実装することで、実行時バインディングの解決を手動で行うことができます。

于 2010-06-24T06:59:40.623 に答える