加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

使用delphi中的类作为参数调用dwscript过程

发布时间:2020-12-15 09:12:10 所属栏目:大数据 来源:网络整理
导读:我如何从delphi调用一个将类作为参数的DWScript过程? 例如: DWScript方面: procedure Proc1(AParam: TObject);begin // do something usefulend; 德尔福方面: var Obj: TObject;Exec.Invoke('Proc1',[obj]); 解决方法 您需要将Delphi端对象包装到Script
我如何从delphi调用一个将类作为参数的DWScript过程?

例如:

DWScript方面:

procedure Proc1(AParam: TObject);
begin
  // do something useful
end;

德尔福方面:

var
  Obj: TObject;


Exec.Invoke('Proc1',[obj]);

解决方法

您需要将Delphi端对象包装到Script端对象中,并在需要时创建一个.

对于曝光,您可以使用TdwsUnit并手动公开(这可以允许保护Delphi端类免受脚本误操作),或使用RTTI曝光(但在这种情况下,脚本端的错误将能够直接影响Delphi,因此可能会崩溃主机,所以如果你知道你的类已经安全,或者如果你不关心沙盒,那么只使用RTTI).

如果你需要的只是一个简单的方法,那么更简单的方法是使用RTTI环境(参见URTTIExposeTests中的TRTTIExposeTests.EnvironmentTest),但请记住上面关于RTTI和安全/沙盒的注释.

更复杂的方法是使用类似代码创建脚本端对象

scriptObj:= Info.Vars [‘TScriptSideClassName’].方法[‘Create’].调用([param1,param2]);

然后手动调整其ExternalObject属性.

您可能还需要担心只创建一次脚本端对象(如果您希望脚本端对象比较正常工作),以及清理(即如果在脚本中释放Delphi端对象时会发生什么情况仍在运行,或者谁应该负责释放脚本端对象时释放Delphi端对象),以及其他细微之处(当Delphi获得某种形式的自动内存管理时,这将变得更简单).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读