Próbuję utworzyć formę modalną z dwscript. Im rejestracji formularza z ExposeRtti, a następnie wykonać skrypt, ale nie powiedzie się na "przepełnienie stosu" podczas Script.Compile. Czy ktoś ma rozwiązanie tego błędu.Przepełnienie stosu podczas kompilowania pliku dwscript zawierającego TForm.Create (zero)
I z pewnością nadzieję, że nie trzeba rejestrować wszystkie właściwości i funkcje TForm ręcznie jak mamy się z remobjects PascalScript, to będziemy brzydki w tej epoce, jak tego uniknąć ..
Czy dwscript to zrobić, czy formy są po prostu poza zakresem dwscript (na tym etapie?)?
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;
nie wiem, czy można użyć TForm, ma właściwości, które same muszą być wystawione przed klasą TForm, dlaczego nie można po prostu stworzyć bardziej lekką wersję TForm w kolekcji klas TdwsUnit? – ComputerSaysNo
Czy błąd rzeczywiście występuje podczas kompilacji, czy jest to podczas wywołania 'ExposeRTTI' bezpośrednio przed nim? Wydaje się to bardziej prawdopodobne. –
WZ nie ma nic wspólnego z TForm. Zdarza się to nawet, jeśli robisz tylko ExposeRTTI z TObject i masz pusty skrypt. –