2011-01-29 11 views
19

मुझे डेल्फी रन टाइम लाइब्रेरी (आरटीएल), system.pas और पसंद की अंतर्निहित रूप से संशोधित करने के साथ कुछ प्रयोग करने के लिए यह लालसा है ... यह संभव है या नहीं?आरटीएल का पुन: संकलन - यदि संभव हो तो फिर कैसे?

मुझे "हां" जैसी चुनौतियों का बहुत शौक है, लेकिन आपको कुछ असेंबलर जादूगर के लिए कस्टम .obj फ़ाइलें प्रदान करनी होंगी क्योंकि उन्हें कभी भी आधिकारिक डेल्फी स्रोत के साथ वितरित नहीं किया गया था "। मेरे साथ ठीक है, मैं बस जानना चाहता हूँ।

मैं इस प्रयोग को डेल्फी 7 के साथ करना चाहता हूं, लेकिन किसी अन्य संस्करण पर जानकारी के अंदर ठीक है। यह एक कंपनी के साथ होने का एक हिस्सा है जो पाषाण युग के बाद डेल्फी के साथ काम करता है।

(मैं हमेशा इस लगा उन RTFM प्रश्नों में से एक हो सकता है, इस सवाल का जवाब एक शानदार "नहीं!", लेकिन किसी कारण गूगल के लिए यह पुष्टि नहीं होंगे। बताते हैं)

उत्तर

19

आप आरटीएल को किसी अन्य इकाई की तरह पुन: संकलित कर सकते हैं।

System.pas के लिए आपको कमांड लाइन कंपाइलर का उपयोग करना होगा।

उदाहरण के लिए, यहाँ एक काम बैच फ़ाइल सामग्री (वहाँ कुछ अच्छी तरह से प्रलेखित नहीं कमांड लाइन स्विच है):

del *.dcu /s 
"c:\program files\borland\delphi7\bin\dcc32.exe" -O+ -Q -M -Y -Z -$D+ System.pas 

यह पुन: संयोजित करेंगे System.pas और SysInit.pas (दोनों निम्नतम स्तर RTL फ़ाइलें) ।

लेकिन अपनी पुन: निर्मित डीसीयू फ़ाइलों का उपयोग करने के लिए, आपको अपने आईडीई की पहली स्थिति में अद्यतन डीसीयू फाइलों को रखने वाले फ़ोल्डर को रखना होगा: उदाहरण के लिए, डेल्फी 7 में यह विकल्प/पर्यावरण विकल्प/लाइब्रेरी है, फिर अपने फ़ोल्डर को पहले "लिबररी पथ" और "ब्राउजिंग पथ" फ़ील्ड में रखें।

और शायद आपके डेल्फी स्थापना निर्देशिका में मूल .dcu फ़ाइलों को हटाने के लायक है।

लेकिन सुनिश्चित करें कि आप इकाई के "इंटरफेस" हिस्से को नहीं बदलेंगे, या आपको आरटीएल (या तृतीय-पक्ष घटकों) की अन्य संशोधित इकाइयों के साथ संकलन करने में परेशानी होगी। आप "कार्यान्वयन" भाग को बदल सकते हैं, फिक्स लागू कर सकते हैं या गति के लिए कुछ भाग फिर से लिख सकते हैं, लेकिन किसी भी लिंकिंग त्रुटि से बचने के लिए "इंटरफ़ेस" भाग को न बदलें।

हमेशा मूल .pas और .dcu फ़ाइलों का बैकअप लें जो आप बदल रहे हैं। और कुछ स्वचालित संकलन परीक्षण करना एक अच्छा विचार है, ताकि आप सुनिश्चित हो सकें कि आरटीएल के आपके संशोधन में कोई प्रतिक्रिया नहीं होगी।

हमने निम्न स्तर के आरटीएल कार्यों (ज्यादातर System.pas और SysUtils.pas) की बेहतर गति के लिए हमारे Enhanced Run Time Library के लिए ऐसा आरटीएल पुनर्मूल्यांकन किया है। डेल्फी 7 और 2007 के लिए डिज़ाइन किया गया। हाल ही में डेल्फी संस्करण के लिए, आप अभी भी उसी सिद्धांत का उपयोग कर सकते हैं।

+0

स्पष्ट लेखन के लिए धन्यवाद, कठिन अनुभव द्वारा समर्थित। अति उत्कृष्ट! –

16

आप केवल पुन: संयोजित कर सकते हैं RTL कमांड लाइन से। आपकी स्थापना की आरटीएल स्रोत निर्देशिका में एक मेकफ़ाइल होना चाहिए। इसे make.exe कमांड-लाइन उपयोगिता के साथ उपयोग करने के लिए डिज़ाइन किया गया है जो आपके इंस्टॉलेशन के "बिन" फ़ोल्डर में होना चाहिए। मैं अनुशंसा करता हूं कि आप प्रासंगिक स्रोतों को प्रयोग के लिए एक अलग स्थान पर कॉपी करें। मुझे आपको सावधान रहना चाहिए कि सिस्टम इकाई कम्पाइलर के साथ कसकर मिलती है जो कई कार्यों को एक विशिष्ट नाम रखने की अपेक्षा करती है और यदि कोई भी घोषित किया जाता है तो विशेष पैरामीटर सूचियां होती हैं। कई आरटीएल "सहायक" कार्यों में औपचारिक रूप से घोषित पैरामीटर नहीं होते हैं, फिर भी उम्मीद है कि पैरामीटर एक निश्चित फैशन में पारित किए जाएंगे।

सावधानी बरतने का एक और बिट कुछ वर्गों, कार्यों या प्रकारों की इंटरफ़ेस घोषणाओं को बदल रहा है। ऐसा करने से मौजूदा डीसीयू फाइलों और घटकों के साथ गंभीर असंगतता हो सकती है। इस कारण से आपको अपने कस्टम संशोधित संस्करणों के साथ शामिल आरटीएल या तृतीय-पक्ष घटकों से डीसीयू फ़ाइलों को इंटरमीक्स करते समय बहुत सावधान रहना चाहिए। मैं सुझाव दूंगा कि आप इंटरफ़ेस तोड़ने वाले परिवर्तनों के खान-क्षेत्र में पहुंचने से पहले केवल कार्यान्वयन अनुभाग में परिवर्तन करके ही शुरुआत करें।

+0

मुझे याद है कि संकलक भी घोषणाओं के आदेश पर निर्भर करता है System.pas। यह बहुत समय पहले हुआ है क्योंकि मैंने आरटीएल का पुन: संकलन किया था, इसलिए यह टर्बो पास्कल/डेल्फी 1 (16-बिट) युग में हो सकता है। –

+2

हम आरटीएल को क्या कहते हैं? System.pas और SysInit.pas के लिए, यह केवल कमांड लाइन से ही किया जा सकता है। लेकिन अन्य उच्च स्तरीय इकाइयों (जैसे क्लासेस.pas या SysUtils.pas) के लिए यह आईडीई विकल्पों से पुरानी लाइब्रेरी फ़ाइलों को बदलकर आईडीई से किया जा सकता है, और एक अन्य .pas स्रोत प्रदान करके इसका उपयोग किया जाएगा डिफ़ॉल्ट संस्करण। –

+0

जैसा कि मुझे याद है Variants.pas को बिना किसी बदलाव के आसानी से पुनः संयोजित किया जा सकता है। – Torbins

संबंधित मुद्दे