2009-04-20 9 views
5

में रनटाइम और डिजाइन समय पैकेज पर फस मैंने देखा है कि डेल्फी में अधिकांश घटक (वीसीएल) दो भागों में विभाजित हैं।
1) DesignTime पैकेज
2) रनटाइम पैकेज
डेल्फी

क्यों यह सब उपद्रव। यदि रनटाइम और डिज़ाइनटाइम पैकेज दोनों एक ही पैकेज में एकजुट होते हैं तो इससे क्या फर्क पड़ता है?

मैंने कभी भी इस अलगाव तर्क को समझने में सक्षम नहीं किया है।

तो इसके पीछे तर्क क्या है?

एक बार जब मैंने किसी का सिर सुनाया तो यह उल्लेख किया गया कि यह भेद केवल माइक्रोसॉफ्ट द्वारा निर्धारित घटक मानकों को अपनाने और पालन करने से बचने के लिए किया गया था। वास्तव में इसके पीछे कोई तर्क नहीं है।

क्या यह सच है?

उत्तर

11

ए। कुछ घटकों में संपत्ति संपादकों जैसी बड़ी और जटिल डिज़ाइन-टाइम सुविधाएं होती हैं, जिन्हें आप अपने रन-टाइम एप्लिकेशन में शामिल नहीं करना चाहते हैं।

बी। कुछ घटक विक्रेता रॉयल्टी मुक्त रन-टाइम उपयोग के लिए अपनी बड़ी और जटिल डिज़ाइन-टाइम सुविधाओं को लाइसेंस नहीं देना चाहते हैं, लेकिन उन्हें केवल डेवलपर्स द्वारा उपयोग करने के लिए प्रतिबंधित करते हैं।

+0

प्वाइंट ए: उदाहरण के लिए क्या होगा यदि डिज़ाइनटाइम और रनटाइम पैकेज संकलित EXE में शामिल हो जाएं? मैं इसे अब एक दिन के रूप में पूछ रहा हूं मेमोरी अब किसी भी समय बाधा नहीं है क्योंकि किसी भी समय लगभग हमेशा पर्याप्त स्मृति उपलब्ध होती है। मैं बिंदु बी के साथ कुछ हद तक सहमत हूं लेकिन एक अच्छे प्रोग्रामर के लिए यह तर्क लागू करने के लिए छोटा काम होगा जो रनटाइम के दौरान डिज़ाइनटाइम इंटरफ़ेस को लोड करने की अनुमति नहीं देगा। यह किसी भी समस्या के बिना COM घटकों के साथ हमेशा मामला रहा है। –

+2

चाहे आप डिज़ाइनटाइम इकाइयों का उपयोग करें या संकलित समय पर हल नहीं किया गया हो, रनटाइम पर नहीं। पैकेज स्थिर रूप से जुड़े डीएलएल हैं। इसलिए संकुल का उपयोग करके आपके लक्ष्य निष्पादन योग्य उन पर निर्भर करता है, यानी। यदि आप सभी निर्भरताओं को नहीं ढूंढ पाते हैं तो विंडोज आपके निष्पादन योग्य को लोड और चलाने में सक्षम नहीं होंगे। –

+0

मुझे ऐसा नहीं लगता है क्योंकि यदि पैकेज स्थिर रूप से जुड़े हुए हैं तो सभी निर्भरताओं को खोजने की आवश्यकता कहां है? –

4
  1. Designtime सामान डेल्फी के आंतरिक इकाइयों/संकुल का उपयोग करने के जो आप न स्रोत कोड हो सकता है और न ही कानूनी तौर पर बाइनरी रूप में वितरित करने के लिए अनुमति दी जाती है।
  2. शायद आप उपयोगकर्ता को कंप्यूटर पर स्थापित होने के लिए डेल्फी की आवश्यकता नहीं है।

तर्क आपके कोड को "गोंद" कोड से अलग रखना है जो इसे & आईडीई में काम करने में आसान बनाता है।

+0

उदाहरण के लिए कहें कि यदि मैं ग्रिड नियंत्रण के वीसीएल लेखक के रूप में हूं, तो मैं अपने उपयोगकर्ताओं को ग्रिड लेआउट इत्यादि में बदलाव करने के लिए सुविधा देना चाहता हूं क्योंकि वे डिज़ाइन समय पर कर पाएंगे, तो मैं कर सकता हूं इस? आखिर में मुझे सीजी द्वारा प्रदान किए गए मानक नियंत्रणों का उपयोग करना होगा और उन पर निर्माण करना होगा, या क्या मुझे अपने स्वयं के स्क्रैच से यूआई बनाना है? –

+1

हाँ आप यह कर सकते हैं। डिजाइनटाइम डेल्फी आईडीई द्वारा उपयोग की जाने वाली पुस्तकालयों को संदर्भित करता है। इसमें संपत्ति संपादक, कोड निर्माण विज़ार्ड शामिल हैं, जो किसी भी कोड में आईडीई के साथ इंटरैक्ट करते हैं। उदाहरण के लिए, TStrings संपादक जिसे आप TListBox की आइटम प्रॉपर्टी को संपादित करने के लिए आईडीई में उपयोग कर सकते हैं वह डिज़ाइनटाइम है। TListBox खुद नहीं है। यदि आप अपने उपयोगकर्ताओं को रनटाइम पर आइटम संपादित करने के लिए एक समान संपादक प्रदान करना चाहते हैं तो आपको अपना खुद का प्रदान करना होगा। –

5

आप अनुसंधान का एक छोटा सा किया था, तो आप this SO question पूछा कम से कम 2 दिन पहले मिल गया है चाहता हूँ ...

के रूप में पहले से ही समझाया मुख्य कारण यह है कि आप एक में किसी भी डेल्फी डिजाइन इकाई शामिल नहीं कर सकते रनटाइम पैकेज। और आपके निष्पादन योग्य कोड के साथ ब्लूट करने का कोई कारण नहीं है जो कि आईडीई के भीतर ही चलाया जा सकता है।

+1

स्नैक्स को छोड़कर यह स्वीकार्य उत्तर होना चाहिए। :-) –