2012-05-15 14 views
5

युक्त एक dwscript संकलित करते समय ओवरफ़्लो ढेर करें मैं dwscript के साथ एक मोडल फॉर्म बनाने की कोशिश कर रहा हूं। मैं ExposeRtti के साथ फ़ॉर्म को पंजीकृत कर रहा हूं, फिर स्क्रिप्ट निष्पादित करता हूं लेकिन यह स्क्रिप्ट के दौरान "स्टैक ओवरफ़्लो" पर विफल रहता है। कॉम्पाइल। क्या किसी के पास इस त्रुटि का समाधान है।एक TForm.Create (nil)

मैं निश्चित रूप से उम्मीद है कि मुझे नहीं remobjects PascalScript साथ करने के लिए सभी TForm गुण और कार्य मैन्युअल रूप से जैसे हम है रजिस्टर करने के लिए है, यह हम बदसूरत इस युग में, कि बचने के लिए चाहते हैं ..

ऐसा करने 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; 
+1

यकीन नहीं करता है, तो आप एक TForm उपयोग कर सकते हैं, यह गुण है जो स्वयं TForm कक्षा से पहले उजागर किए जाने की आवश्यकता है, क्यों आप बस एक अधिक हल्के संस्करण बनाने नहीं है एक TdwsUnit कक्षाओं के संग्रह के अंदर TForm का? – ComputerSaysNo

+0

क्या संकलन के दौरान वास्तव में त्रुटि हो रही है, या यह इसके ठीक पहले 'ExposeRTTI' कॉल के दौरान है? ऐसा लगता है कि अधिक संभावना है। –

+0

एसओ के पास टीएफओआर के साथ कुछ लेना देना नहीं है। यह तब भी होता है जब आप केवल Tobject से ExposeRTTI करते हैं और एक खाली स्क्रिप्ट है। –

उत्तर

0

स्पष्ट रूप से dwscript विस्तारित आरटीटीआई के माध्यम से कुछ भी ठीक से पंजीकृत नहीं कर सकता है जब तक कि यह सरल वर्ग न हो। ऐसा नहीं है जो मुझे एक स्क्रिप्ट इंजन के लिए दिमाग में था, इसलिए (अभी के लिए) dwscript पूरी तरह से चार्ट का है जब तक कि यह जटिल stuctures रजिस्टर rtti कर सकते हैं। यह बहुत ही आशाजनक है लेकिन इस पैकेज को पूरा करने और उपयोग करने से पहले अभी भी आगे बढ़ने के रास्ते में है।

वापस PascalScript को अभी के लिए, paxcompiler या tmsscript