首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将接口变量注册到remobjects pascal脚本中?

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

Stack Overflow用户
提问于 2011-05-31 14:39:26
回答 2查看 1.4K关注 0票数 2

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

代码语言:javascript
复制
type
  ITest = interface(IInterface)
  ['{7762A355-052F-449D-8347-01B59E2D2738}']
    procedure Execute;
  end;

  TTest = class(TInterfacedObject, ITest)
  private
    procedure Execute;
  end;
代码语言:javascript
复制
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?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-05-31 16:30:10

首先,您需要在OnCompile事件中注册您的接口类型:

代码语言:javascript
复制
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中:

代码语言:javascript
复制
SetVariantToInterface(ps.GetVariable('data'), mydata);
票数 2
EN

Stack Overflow用户

发布于 2011-05-31 15:04:19

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6183865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档