2012-04-24 17 views
5

पर स्वचालित रूप से एक इकाई जोड़ना मैं Delphi 7 और Delphi 2006 में एक घटक पर काम कर रहा हूं, जहां मैं एक इकाई का उपयोग कर रहा हूं जिसे मुझे प्रोजेक्ट की फ़ाइल में जोड़ने की आवश्यकता है जिस पर घटक स्वचालित रूप से गिरा दिया जाता है। रास्ता यूरेका लॉग स्वचालित रूप से परियोजना फाइल करने के लिए इकाई 'ExceptionLog' कहते हैं जैसा:प्रोजेक्ट

enter image description here

किसी को मुझे बताओ कि जब मैं किसी भी रूप पर अपने घटक ड्रॉप प्रोग्राम के रूप में परियोजना फाइल करने के लिए एक इकाई जोड़ने के लिए कर सकते हैं परियोजना?

+2

मुझे लगता है कि स्रोत इकाइयों को सभी मामलों में स्वचालित रूप से जोड़ा जाता है। निश्चित रूप से केवल जब वे ज्ञात होते हैं, जब उन्हें पहले ही डेल्फी पथों में शामिल किया जा चुका है (परिणामस्वरूप क्या होता है)। – TLama

+2

@ टलामा, घटक इकाइयों को * फॉर्म * या * डेटा मॉड्यूल * इकाई स्वचालित रूप से जोड़ा जाता है। वे * प्रोजेक्ट * में स्वचालित रूप से जोड़े नहीं गए हैं। यह कुछ खास यूरेका लॉग खुद के लिए करता है। –

+0

@ रोब, यह अगला प्रश्न है जिसे मैंने गलत तरीके से पढ़ा है। मुझे अधिक ध्यान देना होगा। धन्यवाद! – TLama

उत्तर

6

आपको इसके लिए ओपन टूल्स एपीआई का सबसे अधिक उपयोग करना होगा।

इसके अलावा इकाई को जोड़ने के लिए आपके घटक के लिए TSelectionEditor लिखने की आवश्यकता हो सकती है (मैं RequiresUnit विधि का प्रयास करूंगा)।

हालांकि सक्रिय परियोजना (नीचे कोड) में केवल एक इकाई जोड़ने का एक आसान तरीका है, यह केवल सक्रिय प्रोजेक्ट के लिए काम करता है जो प्रोजेक्ट नहीं हो सकता है, जिस फ़ॉर्म से आप संबंधित हैं, वह घटक घटक जोड़ रहा है। इसके अलावा यह उपयोग खंड के अंत में इकाई जोड़ता है।

uses 
    ToolsAPI; 

var 
    currentProject: IOTAProject; 
begin 
    currentProject := GetActiveProject(); 
    currentProject.AddFile('MyUnit.pas', True); 

आप GExperts source code जांच कर सकते हैं, क्योंकि यह एक वर्ग (TUsesManager) है कि इकाइयों को पार्स करने और उपयोग करता है खंड को संशोधित कर सकते हैं।

+0

मुझे कैसे उम्मीद है कि 'AddFile' 'MyUnit.pas' में MyUnit का उपयोग करने वाली वस्तु को जोड़ देगा, जो लाइब्रेरी घटक के लिए उपयुक्त नहीं होगा। घटक को केवल एक इकाई संदर्भ जोड़ना चाहिए, फ़ाइल संदर्भ नहीं, जैसा कि प्रश्न में चित्र में दिखाया गया है। –

+0

@Rob यह वही करता है जैसा आप कहते हैं। यह दिखाने के लिए सिर्फ एक उदाहरण था कि ओटीए ऐसा करने में सक्षम हो सकता है। लेकिन मुझे एक उचित विधि नहीं मिली। यही कारण है कि मैंने GExperts स्रोत का उल्लेख किया। –

+0

+1: TUsesManager – menjaraz

0

विषम।

मैं अपने डिफ़ॉल्ट डीपीआर को कुछ भी नहीं करने के लिए सेट करता था जिसके परिणामस्वरूप मेरा टूलबॉक्स बहुत खाली था। तो अगर यह मेरे टूलबॉक्स में था तो यह डीआरपी में था - आपको क्या समस्याएं आ रही हैं - आम तौर पर यदि यह टूलबॉक्स में है, तो यह पहले से ही डीपीआर में है।

+0

मेरा मतलब है, मेरे घटक को 'dpr' में 'यूनिट' की आवश्यकता है, और मैं इसे 'उपयोगकर्ता' पर रखने के लिए/उपयोगकर्ता से पूछ नहीं सकता हूं .. इसलिए मुझे उसी – PresleyDias

+0

को स्वचालित करने की आवश्यकता है बिना डेल्फी की मेरी प्रति, आप निश्चित रूप से उस इकाई में एक शर्त निर्धारित कर सकते हैं जिसे आपको डीपीआर में जोड़ना चाहिए, और यदि यह अन्य इकाइयों के लिए नहीं है जो .pas फ़ाइल में जोड़ा जाएगा - एक संकलन त्रुटि फेंक दें "कृपया डीपीआर फ़ाइल में यूनिट एक्स जोड़ें ".. – BugFinder

0

प्रोजेक्ट> यूरेकॉलॉग विकल्प और यूरेकॉलॉग अक्षम करें।

+5

मुझे लगता है कि आपको मेरा प्रश्न नहीं मिला, मेरा मतलब है कि यूरेका लॉग 'डीआरपी' में 'अपवाद लॉग' जोड़ता है। एक ही – PresleyDias

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