यह बहुत आसान इस कोड से बाहर काम करने के लिए है। आप बस TApplication.Create
के लिए एक टेक्स्ट खोज करते हैं। उदाहरण के लिए आईडीई की फाइलों में खोजें सुविधा का उपयोग करना।
लेकिन आप हमेशा आलसी हो सकता है और डिबगर यह करने के लिए मिल सकता है।
- डीबग DCUs सक्षम करें।
TApplication.Create
में एक ब्रेकपाइंट सेट करें।
- रन।
जब प्रोग्राम टूट जाता है, तो कॉल स्टैक देखें। आप देखेंगे कि TApplication
ऑब्जेक्ट को InitControls
से Controls
इकाई में तुरंत चालू किया गया है। और InitControls
को इकाई के initialization
सेक्शन कहा जाता है।
एक सादे वेनिला VCL अनुप्रयोग के लिए पूर्ण कॉल स्टैक इस तरह दिखता है:
Vcl.Forms.TApplication.Create(nil)
Vcl.Controls.InitControls
Vcl.Controls.Vcl.Controls
System.InitUnits
System._StartExe(???,???)
SysInit._InitExe($5A81BC)
Project1.Project1
:749933aa kernel32.BaseThreadInitThunk + 0x12
:76f09ef2 ntdll.RtlInitializeExceptionChain + 0x63
:76f09ec5 ntdll.RtlInitializeExceptionChain + 0x36
TScreen.Create
साथ एक ही बात कर रहा है, तो आप उस TScreen
वस्तु भी InitControls()
में instantiated है देखेंगे।
मैं कोशिश करते हैं और इस सब की व्याख्या नहीं होगा। मुझे लगता है कि यहां से सब कुछ करने के लिए यहां पर्याप्त जानकारी और सलाह है। हालांकि यह XE3 एप्लिकेशन से कॉल स्टैक है, यह आपके डेल्फी 5 एप्लिकेशन के लिए समान दिखाई देगा।
स्रोत
2013-02-07 17:37:09
बनाता है मुझे आश्चर्य है कि क्यों आवेदन पहली जगह में फार्म इकाई में घोषित किया जाता है (नियंत्रण फार्म का उपयोग करता है, प्रपत्र नियंत्रण का उपयोग करता है) .. – kobik
नियंत्रण केवल कार्यान्वयन में फॉर्म का उपयोग करता है। TFplication को TForm से अधिक घोषित किया जाना है क्योंकि यह अपने इंटरफ़ेस अनुभाग में TForm को संदर्भित करता है। –