我使用Delphi的RemObjects Pascal脚本组件,我有以下代码:
type
ITest = interface(IInterface)
['{7762A355-052F-449D-8347-01B59E2D2738}']
procedure Execute;
end;
TTest = class(TInterfacedObject, ITest)
private
procedure Execute;
end;procedure TForm1.Button3Click(Sender: TObject);
var T: ITest;
o: TPSScript;
begin
T := TTest.Create;
o := TPSScript.Create(nil);
try
o.Script.Text :=
'begin ' + sLineBreak +
' T.Execute; ' + sLineBreak +
'end.';
Execute(o);
finally
o.Free;
end;
end;我的问题是如何将接口变量T(ITest的实例)注册到pascal脚本中,以便在pascal脚本中调用T.Execute?
发布于 2011-05-31 16:30:10
首先,您需要在OnCompile事件中注册您的接口类型:
with ps.Compiler.AddInterface(ps.Compiler.FindInterface('IUnknown'), StringToGuid('{7762A355-052F-449D-8347-01B59E2D2738}'), 'ITest') do
RegisterMethod('procedure Execute;', cdRegister);
ps.AddRegisteredVariable('data', 'ITest');然后在OnExecute中:
SetVariantToInterface(ps.GetVariable('data'), mydata);发布于 2011-05-31 15:04:19
这是在他们的维基上描述的,这里是article。也许有人可以总结一下,谁对这些东西感兴趣。我是通过谷歌找到的。
https://stackoverflow.com/questions/6183865
复制相似问题