如何将接口变量注册到remobjects pascal脚本?

时间:2011-05-31 06:39:26

标签: delphi pascal delphi-xe pascalscript remobjects

我使用Delphi XE的RemObjects Pascal Script组件,我有以下代码:

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?

2 个答案:

答案 0 :(得分:2)

首先,您需要在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);

答案 1 :(得分:0)

在他们的维基上描述了article。 也许有人可以总结一下,谁是这些东西。我刚刚通过谷歌找到了它。