如何在Delphi Prism中使用interop实例化COM对象

时间:2009-11-17 10:31:49

标签: delphi com-interop oxygene

使用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

我理解这条消息,但不知道该怎么做。非常感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您可以尝试使用System。CreateInstance类中的Activator方法实例化COM对象。等效代码可能如下所示:

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

请注意,您需要使用程序标识符从GetTypeFromProgID获取类型,否则您将生成InvalidComObjectException