आप इसे MadCodeHook के साथ कर सकते हैं। HookCode
फ़ंक्शन का उपयोग करें, इसे उस फ़ंक्शन का पता दें जिसे आप प्रतिस्थापित करना चाहते हैं और उस फ़ंक्शन का पता जिसे आप इसके बजाय बुलाया जाना चाहते हैं। यह आपको एक फ़ंक्शन पॉइंटर वापस देगा जो आप मूल को कॉल करने और बाद में अनहेक करने के लिए उपयोग कर सकते हैं। संक्षेप में, यह बैरी के विवरण के मध्य तीन चरणों को लागू करता है।
मुझे लगता है कि मैडकोडहूक व्यक्तिगत उपयोग के लिए स्वतंत्र है। यदि आप उससे कुछ बेहतर खोज रहे हैं, तो आप an old version of the Tnt Unicode controls ढूंढने का प्रयास कर सकते हैं।यह वीसीएल के कुछ कोडों में यूनिकोड समर्थन को इंजेक्ट करने के लिए एक ही हुकिंग तकनीक का उपयोग करता था। आपको पुराने संस्करण की आवश्यकता होगी क्योंकि अधिक हालिया रिलीज अब मुक्त नहीं हैं। TntSystem.pas में फ़ंक्शन पाएं, यह भी है जहां आपको इसका उपयोग करने के उदाहरण मिलेंगे।
कोड-हुकिंग अच्छा है क्योंकि आपको आरटीएल और वीसीएल को फिर से कंपाइल करने की आवश्यकता नहीं है, और इसमें यह नियंत्रित करने के लिए सशर्त संकलन शामिल नहीं है कि कौन से कार्य दायरे में हैं। आप कोड को अपनी यूनिट-टेस्ट सेटअप प्रक्रिया से हुक कर सकते हैं, और मूल कोड कभी अंतर नहीं जान पाएगा। ऐसा लगता है कि यह मूल FileExists
फ़ंक्शन (क्योंकि यह है) को कॉल कर रहा है, लेकिन जब यह वहां जाता है, तो यह तुरंत आपके मॉक किए गए संस्करण पर कूद जाएगा।
स्रोत
2009-01-22 15:30:53
"या आप सशर्त रूप से एक अलग इकाई को संदर्भित करने के लिए उपयोग घोषणाओं को संशोधित करते हैं।" - मुझे मारता है कि यह इसके लिए सबसे आसान होना चाहिए। सुनिश्चित करें कि आपकी विशेष इकाई आखिरी है, और फिर आप किसी भी फ़ंक्शन को फिर से परिभाषित कर सकते हैं। – mj2008
यह मानता है कि यूनिट स्रोत उपलब्ध है। यदि यह है, तो यह एक ब्रेनर है; हालांकि, प्रश्नकर्ता ने विशेष रूप से रनटाइम के बारे में पूछा था! –
मुझे विडंबना पसंद है :) लेकिन आप पूरी तरह से सही हैं। +1 – guerda