首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从delphi中调用一个带有param类的dwscript过程

从delphi中调用一个带有param类的dwscript过程
EN

Stack Overflow用户
提问于 2012-06-01 22:37:47
回答 1查看 384关注 0票数 4

我如何从delphi调用一个以类为参数的DWScript过程?

例如:

DWScript端:

代码语言:javascript
复制
procedure Proc1(AParam: TObject);
begin
  // do something useful
end;

Delphi side:

代码语言:javascript
复制
var
  Obj: TObject;


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

回答 1

Stack Overflow用户

发布于 2012-06-04 14:16:54

您需要将您的Delphi端对象包装到一个脚本端对象中,并在需要时创建一个。

对于暴露,你可以使用TdwsUnit和手动暴露(这可以保护Delphi端的类不受脚本误操作的影响),或者使用RTTI暴露(但在这种情况下,脚本端的but将能够直接影响Delphi,从而可能使主机崩溃,所以只有在你知道你的类已经是安全的,或者你不关心沙箱的情况下才使用RTTI )。

如果您只需要简单的曝光,更简单的方法是使用RTTI环境(参见URTTIExposeTests中的TRTTIExposeTests.EnvironmentTest ),但请记住上面关于RTTI和安全/沙箱的注意事项。

更复杂的方法是使用如下代码创建一个脚本端对象

scriptObj := Info.Vars['TScriptSideClassName'].Method['Create'].Call([param1, param2]);

然后手动调整其ExternalObject属性。

您可能还必须担心只创建一次脚本端对象(如果您希望脚本端对象比较像往常一样工作),以及清理(即。如果Delphi端对象在脚本仍在运行时被释放会发生什么情况,或者当脚本端对象被释放时谁应该负责释放Delphi端对象),以及其他微妙的问题(当/如果Delphi获得某种形式的自动化内存管理时,这将变得更简单)。

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

https://stackoverflow.com/questions/10852297

复制
相关文章

相似问题

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