युक्त एक 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;
यकीन नहीं करता है, तो आप एक TForm उपयोग कर सकते हैं, यह गुण है जो स्वयं TForm कक्षा से पहले उजागर किए जाने की आवश्यकता है, क्यों आप बस एक अधिक हल्के संस्करण बनाने नहीं है एक TdwsUnit कक्षाओं के संग्रह के अंदर TForm का? – ComputerSaysNo
क्या संकलन के दौरान वास्तव में त्रुटि हो रही है, या यह इसके ठीक पहले 'ExposeRTTI' कॉल के दौरान है? ऐसा लगता है कि अधिक संभावना है। –
एसओ के पास टीएफओआर के साथ कुछ लेना देना नहीं है। यह तब भी होता है जब आप केवल Tobject से ExposeRTTI करते हैं और एक खाली स्क्रिप्ट है। –