首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译包含TForm.Create(nil)的dwscript时发生堆栈溢出

编译包含TForm.Create(nil)的dwscript时发生堆栈溢出
EN

Stack Overflow用户
提问于 2012-05-16 04:51:56
回答 1查看 434关注 0票数 5

我正在尝试用dwscript创建一个模态表单。我正在向ExposeRtti注册表单,然后执行脚本,但在Script.Compile期间出现“堆栈溢出”而失败。有谁有解决这个错误的办法吗?

我当然希望我不必像使用远程对象PascalScript那样手动注册所有的TForm属性和函数,这在这个时代是丑陋的,我们想要避免这种情况。

dwscript可以做到这一点吗,或者表单只是超出了dwscript的范围(在这个阶段?)?

代码语言:javascript
复制
procedure TMainForm.Button1Click(Sender: TObject);
var AdwsProgramExecution: IdwsProgramExecution;
  ADelphiWebScript: TDelphiWebScript;
  AdwsProgram: IdwsProgram;
  AdwsUnit: TdwsUnit;
begin
  AdwsUnit := TdwsUnit.Create(nil);
  ADelphiWebScript := TDelphiWebScript.Create(nil);
  try
    AdwsUnit.UnitName := 'ShowModalTest';
    AdwsUnit.Script := ADelphiWebScript;
    AdwsUnit.ExposeRTTI(TypeInfo(TObject)); //Otherwise GetOnAlignInsertBefore error when 'compiling'
    AdwsUnit.ExposeRTTI(TypeInfo(TForm)); //Want t ocreate a form
    AdwsProgram := ADelphiWebScript.Compile('procedure TestShowModal; begin TForm.Create(nil).ShowModal; end; end.'); //Stack overflow
    if AdwsProgram.Msgs.Count = 0 then 
    begin
      AdwsProgramExecution := AdwsProgram.Execute;
      MEResult.Lines.Text := AdwsProgramExecution.Result.ToString;
    end
    else 
      MEResult.Lines.Text := AdwsProgram.Msgs.AsInfo;
  finally
    ADelphiWebScript.Free;
    AdwsUnit.Free;
  end;
end;
EN

回答 1

Stack Overflow用户

发布于 2012-05-21 05:54:40

显然,dwscript不能通过扩展RTTI正确注册任何东西,除非它是简单的类。这不是我心目中的脚本引擎,所以(目前) dwscript完全属于图表,除非它可以rtti注册复杂的结构。它很有前途,但在这个包完成和使用之前还有很长的路要走。

现在返回到pascalscript、For编译器或tmsscript

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

https://stackoverflow.com/questions/10608731

复制
相关文章

相似问题

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