gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 15:14:38 25 4
gpt4 key购买 nike

我正在尝试使用 dwscript 创建模式表单。我使用 ExposeRtti 注册表单,然后执行脚本,但在 Script.Compile 期间因“堆栈溢出”而失败。有没有人有这个错误的解决方案。

我当然希望我不必像我们必须使用 remobjects PascalScript 那样手动注册所有 TForm 属性和函数,在这个时代我们会很丑陋,希望避免这种情况..

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 时堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10608731/

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