将接口实现注入脚本

时间:2013-05-21 11:32:46

标签: delphi interface dwscript

如何将“接口实现”注入脚本?假设我在TdwsUnit中定义了一个接口类型,比如

IFoo = interface
  procedure Bar;
end;

现在如何在脚本中实现一个返回array of IFoo(或者IFoo列表甚至单个IFoo)的函数?

我尝试将IFoo项添加到单元的Instances集合中但导致错误:

  

语法错误:TdwsUnit:“uTest” - TdwsInstance:“tmp” - AutoInstantiate为true但DataType“IFoo”不是类

创建一个IFoo类型的变量编译,它的OnReadVar事件触发,但是我应该以{{1​​}}的形式返回那里?

我想我可以为每个接口定义一个类,然后创建这些类的实例,但它似乎有点迂回,因为我本身不需要这些类,我只想通过接口类型向脚本公开信息。 ..那么有没有办法将一个“接口实例”数组返回给脚本?

更新

所以,我已经想出如何将数组从Delphi端返回到脚本端,现在我需要找到一种方法来创建“接口实例”以放入结果数组......到目前为止我所拥有的:

value的后代中,我创建了一个函数(实际上是一种方法,但我猜这不相关)

TdwsUnit

然后在meth := typClass.Methods.Add; meth.Name := 'GetData'; meth.ResultType := 'array of String'; meth.OnEval := H_EvalFnc_GetData;

OnEval

现在我需要将结果类型更改为procedure TMyUnit.H_EvalFnc_GetData(Info: TProgramInfo; ExtObject: TObject); begin Info.ResultVars.Member['Length'].Value := 2; Info.ResultVars.Element([0]).Value := 'Hello'; Info.ResultVars.Element([1]).Value := 'Word'; end; ,并弄清楚如何在array of IFoo hadler中创建数组元素...任何有关如何欢迎的提示。

0 个答案:

没有答案