Estoy intentando crear un formulario modal con dwscript. Estoy registrando el formulario con ExposeRtti, luego ejecuto el script pero falla en un "desbordamiento de pila" durante el Script.Compile. ¿Alguien tiene una solución para este error?Desbordamiento de pila al compilar un dwscript que contiene un TForm.Create (nil)
sin duda espero que no tengo que registrar todas las propiedades y funciones TForm manualmente como que tenemos que con RemObjects PascalScript, sería feo que en esta época, como para evitar que ..
Puede dwscript hacer esto, o son formas simplemente más allá del alcance de dwscript (en esta etapa?)?
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;
no está seguro de si se puede utilizar un TForm, tiene propiedades que a su vez necesita ser expuesta antes de la clase TForm, ¿por qué no sólo tiene que crear una versión más ligera de TForm dentro de la colección de clases de TdwsUnit? – ComputerSaysNo
¿El error realmente está ocurriendo durante la compilación, o es durante la llamada 'ExposeRTTI' inmediatamente antes? Eso parece más probable. –
SO no tiene nada que ver con TForm. Incluso ocurre si solo haces ExposeRTTI desde TObject y tienes un script vacío. –