3

我们正在用 Delphi 从头开始​​重写一个计算核心,并且我们正在寻找让其他人针对它编写代码的方法。

自动化似乎是完成这项工作的一种相当安全的方式。我们正在考虑的一种用途是使其可用于 VBA/Office,并生成一个 .NET 程序集(基于自动化对象,这很容易)。

但是代码应该仍然很容易在 Delphi 中使用,因为我们将使用它来编写我们的(桌面)UI。

现在我一直在研究在 Delphi 中创建一个自动化服务器,在类型库向导中设计组件然后生成基本代码看起来很麻烦。

我们必须实施的计算在尚未批准的官方规则和法规中有所描述,因此在我们完成之前仍可能会发生变化——他们很可能会,也许会相当广泛。等待最终版本不是一种选择。

另一种方法是先完成整个对象模型,然后编写一个单独的自动化服务器,它只描述顶级对象 switch $METHODINFO ON,并使用 TObjectDispatch 返回所有从属对象。 正如我所看到的,这将需要编写包装器以通过 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 回答