0

COM相互運用機能を使用してDelphi PrismでCOMオブジェクトをインスタンス化するための正しい構文は何ですか - new は仕事をしていないようです。

ウェブサイトプロジェクトへの参照として追加しました。関連するコードは次のとおりです。

method _Default.Button1_Click(sender: System.Object; e: System.EventArgs);
var
   FModel: MarketBuilderLib.MarketBuilderModel;
begin
  FModel := New MarketBuilderLib.MarketBuilderModel;
end;

次のメッセージでコンパイルに失敗します:

Error 1 
(PE190) "MarketBuilderLib.MarketBuilderModel" is an interface and cannot be 
instantiated

メッセージは理解できますが、その方法がわかりません。助けてくれてありがとう。

4

1 に答える 1

4

システムでCreateInstanceメソッドを使用して、COM オブジェクトのインスタンス化を試みることができます。アクティベータークラス。同等のコードは次のようになります。

var
  FModel: MarketBuilderLib.MarketBuilderModel;
begin
  FModel := (MarketBuilderLib.MarketBuilderModel)Activator.CreateInstance(GetTypeFromProgID("{PROG ID}"));
end;

プログラム識別子を使用してGetTypeFromProgIDから型を取得する必要があることに注意してください。そうしないと、 InvalidComObjectExceptionが生成されます。

于 2009-11-17T12:17:55.503 に答える