2011-07-19 9 views
6

मैं डेल्फी के लिए काफी नया हूं और मैं डीएचएचएल संग्रह पुस्तकालय का उपयोग करने की कोशिश कर रहा हूं। (देखें http://code.google.com/p/delphi-coll/) मुझे आईडीई परिप्रेक्ष्य से इसके साथ थोड़ा परेशानी है। यह संकलित करता है और सही ढंग से चलता है, लेकिन डेल्फी एक्सई कहीं भी त्रुटियों को दिखाता है जहां मैं हैशसेट लाइब्रेरी का उपयोग करता हूं। सबसे बड़ी शिकायत यह है कि मुझे कोड पूर्ण करने का उपयोग करने से रोकता है।डीएचएल संग्रह पुस्तकालय से थैशसेट का उपयोग करने वाली त्रुटियां

पहले स्थान मैं त्रुटि मिलती है एक वस्तु घोषणा में है:

uses 
    SysUtils, Windows, Collections.Base, Collections.Sets, Collections.Lists, 
    adscnnct, adstable, 
    uOtherClass; 

type 
    OneClass = class(OtherClass) 
    private 
     _bad: THashSet<string>; // THashSet underlined 
     _good: TList<string>;  // No problems 
    end; 

त्रुटि राज्यों: "प्रकार तर्क की कमी से मेल नहीं खाते"

मुझे नहीं लगता कि यह के रूप में मैं कर सकते हैं विन्यास है टीएलिस्ट का उपयोग ठीक है, लेकिन यहां मैं इसे कैसे स्थापित करता हूं: मैंने लाइब्रेरी को परियोजनाओं/लीब्स/डीएचएल कोलेक्शन/लाइब्रेरी में कॉपी किया है और लाइब्रेरी को प्रोजेक्ट्स/लीब्स/बिन में संकलित किया है। मैंने अपने वैश्विक लाइब्रेरी पथ में बिन निर्देशिका शामिल की है, जिसे इसे संकलित और चलाने के लिए मिला है। मैंने आईडीई को मेरी मदद करने के लिए सब कुछ जोड़ने की उम्मीद में (/ libs,/deHLCollections,/Library) को जोड़ने की कोशिश की है, लेकिन ऐसा लगता है कि यह मदद नहीं कर रहा है।

वैसे भी इसे ठीक करने के लिए, या क्या मुझे बस इससे निपटना है?

जेनेरिक्स लादेन कोड का उपयोग कर के साथ मुसीबतों को DeHL संग्रह संस्करण का उपयोग करना 1.1.1.119

+4

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

+2

आप नामकरण कक्षाओं के बेवकूफ डेल्फी अभ्यास को सीखकर और देखना शुरू कर सकते हैं ताकि वे टी और निजी या संरक्षित क्षेत्रों से शुरू हो जाएं ताकि वे एफ से शुरू हो जाएं और CamelCasingLikeThisBecauseItsadelphiReligion का उपयोग कर सकें। (टोनेक्लास, OneClass नहीं, और फ़ील्ड नाम FBad फ़ील्ड _bad नहीं है)। –

+0

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

उत्तर

6

आपका स्वागत है। डीएचएल और जेनेरिक डेल्फी एक्सई में किसी भी पिछले डेल्फी संस्करण की तुलना में बहुत बेहतर काम करते हैं, लेकिन यह वही नहीं है क्योंकि "कोई समस्या नहीं है"। मुझे जो समस्याएं आती हैं वे बिल्कुल आपकी तरह हैं।

मेरी राय यह है कि डीएचएल एक मास्टर डेल्फी प्रोग्रामर द्वारा लिखे गए प्रत्येक संकेत को दिखाता है, और यह कि कुछ तरीकों से सुंदरता की बात है। यह अपने आप की कोई गलती के बिना, बहुत दर्द का स्रोत भी है।

डेल्फी में एक या दो नहीं हैं, लेकिन कम से कम तीन (शायद चार?) अलग पार्सर्स, जिसमें पूर्ण कंपाइलर पार्सर शामिल हैं, और कुछ आईडीई-पार्सर्स जैसे त्रुटि अंतर्दृष्टि (आपके द्वारा निर्मित किए जाने से पहले भी त्रुटियां) और कोड समापन डेटा पार्सर। जेनेरिकों के संबंध में प्रत्येक के पास अलग-अलग भाषा समर्थन सीमाएं होती हैं। यह संभव है कि सभी विभिन्न डेल्फी पार्सर्स के साथ पार्सर समस्याओं से बचने के लिए डीएचएल लिखा जा सके। मैंने कभी भी एक गाइड नहीं देखा है जो सीमाएं दिखाता है, लेकिन अगर मुझे TSomething<TSomething<ISomethingElse>,TBar<IFoo>> में जटिल प्रकार की घोषणाएं उन पार्सर्स से अधिक तोड़ती हैं तो मुझे आश्चर्य नहीं होगा।

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

कहा जा रहा है कि, latest DeHL sources from Subversion मेरे लिए ठीक काम करता है और कोई त्रुटि नहीं चलाता है, लेकिन पूरे डीएचएल संग्रह का सबसे हालिया स्रोत ज़िप मेरे लिए समस्याएं थी।

मुझे उम्मीद है कि डेल्फी के अगले कुछ रिलीज में, जो भी मुद्दे मिले हैं (और डीएचएच सीमाओं को धक्का देने के लिए एक महान जगह प्रतीत होता है, और यही कारण है कि मैं इसका बड़ा प्रशंसक हूं) तय किया जाए, और आप आश्चर्यचकित नहीं होंगे कि क्यों भारी जेनेरिक आपकी आईडीई सुविधाओं को तोड़ते हैं, क्योंकि वे सभी फिर से काम करेंगे।

+0

मैंने रिपोजिटरी की कोशिश की, लेकिन हैशसेट में अभी भी मेरे लिए समस्याएं हैं। बाकी सब कुछ ठीक काम करता है, यह संकलित करता है और उम्मीद के अनुसार चलता है। तो जवाब सिर्फ इसके साथ सौदा करने वाला है? –

+0

आपका शेष मुद्दा पूरी तरह से कॉस्मेटिक है। यदि आप चाहें तो त्रुटि अंतर्दृष्टि बंद करें, लेकिन एक नौसिखिया के रूप में, आप जेनेरिक को छोड़कर बेहतर त्रुटि अंतर्दृष्टि छोड़ देंगे। –

+0

मैंने झूठ बोला! यह अब काम कर रहा है! मुझे नहीं पता कि यह आईडीई या फिर से शुरू कर रहा था, लेकिन अब यह सब अच्छा है। एसवीएन रेपो कॉपी ने चाल की। –

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