Delphi动态方法调用

时间:2012-09-26 22:27:06

标签: delphi dynamic methods invoke

有没有人知道Delphi 2009及以下的免费库允许您动态调用方法?

我已经开始为此编写自己的代码,但我觉得它超出了我的范围。

由于

2 个答案:

答案 0 :(得分:2)

你的问题很模糊。除了后期绑定和脚本编写之外,它还可能意味着使用一种在运行时之前您不知道的名称的方法。

这有两类,COM方法(使用变体类型)或Delphi方法被发现并使用RTTI调用。尽管RTTI在最新的Delphi版本中发生了变化,但我认为http://www.blong.com/Conferences/BorConUK98/DelphiRTTI/CB140.htm适用于D2009

答案 1 :(得分:1)

“动态调用方法”可能意味着许多不同的事情。简单的后期绑定以声明为virtualdynamic的方法的形式内置到语言中,您可能一直使用它们,尤其是virtual个。

但是谈论“动态调用方法”通常会进入脚本区域,从而可以获取一个对象并让最终用户在运行时决定使用该方法调用哪个方法名称。如果你想要,你需要一个Delphi的脚本库。

DWS(Delphi Web Script)工作得很好,作者声称它支持D2009,尽管在XE上进行了积极的开发工作。此外,顾名思义,DWS的设计主要考虑了Web开发,因此将脚本绑定到本机代码中的对象的框架要比它应该的复杂得多。

另一个主要的替代方案是RemObjects的PascalScript库。它支持早于D2009的版本,它的对象绑定系统比DWS简单得多。不幸的是,它也慢得多,而且作者没有很好的支持。但是,特别是对于简单的脚本,任何一个都应该允许用户动态自动化程序中的内容。