我们正在从头开始使用Delphi重写计算核心,并且我们正在寻找让其他人针对它编写代码的方法。
自动化似乎是完成这项工作的一种相当安全的方式。其中一个用途是使其可用于VBA/Office,并生成基于自动化对象的.NET程序集(这很容易)。
但是,由于我们将使用Delphi编写我们的(桌面)UI,因此代码仍应易于从Delphi中使用。
现在我一直在研究如何在Delphi中创建自动化服务器,看起来设计类型库向导中的组件并生成基本代码是相当麻烦的。
我们必须实现的计算是根据尚未批准的正式规则和法规描述的,因此在完成之前可能会发生变化 - 很可能会发生相当大的变化。等待最终版本不是一个选项。
另一种替代方法可能是先完成整个对象模型,然后编写一个单独的自动化服务器,仅描述顶级对象,切换$METHODINFO ON,并使用TObjectDispatch返回所有下属对象。如我所见,这将需要编写包装器以通过IDispatch接口返回对象。因为那里有100多个不同的类,所以这看起来不是一个吸引人的选择。 编辑:TObjectDispatch足够聪明,可以包装由属性和方法返回的任何对象;因此,只需要包装顶级对象即可。然而,缺乏完整的类型库意味着只能进行后期绑定。
在Delphi中编写COM可访问的对象模型的其他更简单(无麻烦)的方法吗?
自动化似乎是完成这项工作的一种相当安全的方式。其中一个用途是使其可用于VBA/Office,并生成基于自动化对象的.NET程序集(这很容易)。
但是,由于我们将使用Delphi编写我们的(桌面)UI,因此代码仍应易于从Delphi中使用。
现在我一直在研究如何在Delphi中创建自动化服务器,看起来设计类型库向导中的组件并生成基本代码是相当麻烦的。
我们必须实现的计算是根据尚未批准的正式规则和法规描述的,因此在完成之前可能会发生变化 - 很可能会发生相当大的变化。等待最终版本不是一个选项。
另一种替代方法可能是先完成整个对象模型,然后编写一个单独的自动化服务器,仅描述顶级对象,切换$METHODINFO ON,并使用TObjectDispatch返回所有下属对象。如我所见,这将需要编写包装器以通过IDispatch接口返回对象。因为那里有100多个不同的类,所以这看起来不是一个吸引人的选择。 编辑:TObjectDispatch足够聪明,可以包装由属性和方法返回的任何对象;因此,只需要包装顶级对象即可。然而,缺乏完整的类型库意味着只能进行后期绑定。
在Delphi中编写COM可访问的对象模型的其他更简单(无麻烦)的方法吗?