5
我試圖用dwscript創建一個模態表單。 Im使用ExposeRtti註冊表單,然後執行腳本,但在Script.Compile期間它在「堆棧溢出」上失敗。有沒有人有這個錯誤的解決方案。編譯包含TForm的dwscript時堆棧溢出(零)
我當然希望我沒有給所有的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;
不知道,如果你可以使用一個TForm的,它有其自身需要TForm的類之前公開的屬性,你爲什麼不只是創造一個更輕量級版本TdwsUnit的類集合中的TForm? – ComputerSaysNo
在編譯過程中實際發生的錯誤,還是在它之前的'ExposeRTTI'調用期間?這似乎更有可能。 –
SO與TForm無關。它甚至會發生,如果你只從TObject執行ExposeRTTI並且有一個空的腳本。 –