2012-05-15 22 views
5

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

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

+0

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. –

+0

WZ nie ma nic wspólnego z TForm. Zdarza się to nawet, jeśli robisz tylko ExposeRTTI z TObject i masz pusty skrypt. –

Odpowiedz

0

Najwyraźniej dwscript nie może zarejestrować niczego poprawnie przez rozszerzony protokół RTTI, chyba że są to proste klasy. Nie o to mi chodziło w przypadku silnika skryptów, więc (na razie) dwscript jest całkowicie wykreślony z wykresu, chyba że może rejestrować skomplikowane struktury. Jest to bardzo obiecujące, ale wciąż jest na dobrej drodze, zanim ten pakiet będzie kompletny i użyteczny.

Teraz z powrotem do PascalScript, paxcompiler lub tmsscript

Powiązane problemy