Как зарегистрировать переменную интерфейса в скрипте remobjects pascal? - PullRequest
2 голосов
/ 31 мая 2011

Я использую RemObjects Pascal Script для Delphi XE, у меня есть следующий код:

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) в сценарии паскаля, чтобы я мог вызывать T.Execute в сценарии паскаля?

Ответы [ 2 ]

2 голосов
/ 31 мая 2011

сначала вам нужно зарегистрировать ваш тип интерфейса в событии 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);
0 голосов
/ 31 мая 2011

Это описано в их вики, здесь статья .Может быть, кто-то может подвести итог, кто занимается этим.Я только что нашел его через гугл.

...