delphi – 编译包含TForm.Create(nil)的dwscript时堆栈溢出

delphi – 编译包含TForm.Create(nil)的dwscript时堆栈溢出,第1张

概述我正在尝试用dwscript创建一个模态表单.我使用ExposeRtti注册表单,然后执行脚本,但在Script.Compile期间它在“堆栈溢出”时失败.有没有人有这个错误的解决方案. 我当然希望我不必手动注册所有TForm属性和函数,就像我们必须使用remobjects PascalScript一样,在这个时代它会让我们难看,就像避免那样…… dwscript可以这样做,还是形式超出了dwsc 我正在尝试用DWscript创建一个模态表单.我使用ExposeRtti注册表单,然后执行脚本,但在Script.Compile期间它在“堆栈溢出”时失败.有没有人有这个错误的解决方案.

我当然希望我不必手动注册所有TForm属性和函数,就像我们必须使用remobjects PascalScript一样,在这个时代它会让我们难看,就像避免那样……

DWscript可以这样做,还是形式超出了DWscript的范围(在这个阶段?)?

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;
解决方法 显然DWscript无法通过扩展RTTI正确注册任何内容,除非它是简单的类.这不是我对脚本引擎的想法,所以(现在)DWscript完全是图表,除非它可以rtti注册复杂的结构.这是非常有前途的,但在这个包完整和可用之前还有很长的路要走.

现在回到pascalscript,paxcompiler或tmsscript

总结

以上是内存溢出为你收集整理的delphi – 编译包含TForm.Create(nil)的dwscript时堆栈溢出全部内容,希望文章能够帮你解决delphi – 编译包含TForm.Create(nil)的dwscript时堆栈溢出所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1271474.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存