gpt4 book ai didi

delphi - 如何将接口(interface)变量注册到 remobjects pascal 脚本中?

转载 作者:行者123 更新时间:2023-12-03 18:38:53 29 4
gpt4 key购买 nike

我为 Delphi XE 使用 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;

我的问题是如何将接口(interface)变量 T(ITest 的实例)注册到 pascal 脚本中,以便我可以在 pascal 脚本中调用 T.Execute?

最佳答案

首先你需要在 OnCompile 事件中注册你的接口(interface)类型:

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);

关于delphi - 如何将接口(interface)变量注册到 remobjects pascal 脚本中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6183865/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com