【发布时间】:2012-04-02 16:20:01
【问题描述】:
我有一个这样的 DWScript
var Outputter: TOutputter;
procedure OutputterTester;
begin
Outputter.Print;
end;
TOutputter(只是复杂类的一个例子)在 delphi 代码中声明和创建,并通过 Rtti 暴露给 DWScript。
TOutputter = class
procedure Print;
end;
我想将编译后的脚本用于多个实例,但更改它链接到当前实例的值 Outputter。 我知道我可以通过以下方式访问脚本变量:
var Exec : IdwsProgramExecution;
...
AVar := Exec.Info.Vars['Outputter'].Value;
但该值是 Variant,因此我无法分配对象。如何更改值?如果我首先在脚本中创建类,例如:
procedure Init;
Outputter := TOutputter.Create;
end;
我可以为 Exec.Info.Vars['Outputter'].ScriptObj.ExtObject 分配一个任意的 TOutputter 实例(在 delphi 代码中创建)并通过 Outputter 在脚本代码中访问它们。但是我想分配一个 Delphi 代码创建的没有初始化部分的 TOutputter 实例。
感谢您的帮助!
【问题讨论】:
-
什么是 TOutputter?一类?一个记录?类型的别名?还有谁负责创建脚本端对象,谁负责维护该脚本端对象后面的 Delphi 端对象? (“谁”是指脚本?Delphi 代码?还有什么?)
-
我已调整我的问题以回答不明确的事实。感谢您的帮助!