2012-05-15 7 views
5

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; 
+1

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

+0

¿El error realmente está ocurriendo durante la compilación, o es durante la llamada 'ExposeRTTI' inmediatamente antes? Eso parece más probable. –

+0

SO no tiene nada que ver con TForm. Incluso ocurre si solo haces ExposeRTTI desde TObject y tienes un script vacío. –

Respuesta

0

Parece que dwscript no puede registrar nada correctamente a través de RTTI extendido a menos que sean clases simples. Eso no es lo que tenía en mente para un motor de script, así que (por ahora) dwscript es completamente del gráfico a menos que pueda registrar estructuras complicadas. Es muy prometedor, pero aún tiene mucho camino por recorrer antes de que este paquete esté completo y sea utilizable.

Por ahora de nuevo a PascalScript, paxCompiler o tmsscript

Cuestiones relacionadas