डेल्फी 6 में यदि आप किसी ऑब्जेक्ट को एक TStringList में डालने का प्रयास करते हैं जो सॉर्ट किया गया है (सॉर्ट किया गया = सत्य) एक अपवाद आपको चेतावनी दी जाती है कि सॉर्ट की गई सूची पर InsertObject() की अनुमति नहीं है। अगर मैं InsertObject() को कॉल करना चाहता हूं तो मैं इसे समझ सकता हूं, सूची के क्रमबद्ध क्रम को नष्ट करना आवश्यक है। लेकिन यह देखते हुए कि TStringList.Find() विधि:डेल्फी की TStringList.InsertObject() विधि सूची को सॉर्ट किए जाने पर अपवाद को क्यों फेंक दिया जाता है?
function TStringList.Find(const S: string; var Index: Integer): Boolean;
एक सूचकांक रिटर्न अगर यह सूची में जोड़ा गया, कि सूचकांक के साथ InsertObject() कॉल आप वास्तव में क्या प्रविष्टि सूचकांक एक दिया स्ट्रिंग के लिए किया जाना चाहिए कह चाहिए ऑपरेशन के बाद सॉर्ट किए गए क्रम में सॉर्ट की गई सूची को अभी भी छोड़ दें। मैंने TStringList के लिए डेल्फी स्रोत की जांच की है और ऐसा लगता है कि मेरा दावा है।
अभी के लिए मैं केवल TStringList के लिए एक नया उप-वर्ग बना रहा हूं जो InsertObject() को ओवरराइड करता है और सॉर्टेड सूची पर InsertObject() को कॉल किया जाता है, लेकिन अपवाद नहीं फेंकता है, लेकिन मैं यह सुनिश्चित करना चाहता हूं कि कुछ नहीं है छुपा खतरे जो मैं अभी नहीं देख रहा हूं।
- roschler
आप क्यों नहीं बस नहीं है 'AddObject'' पर कॉल करें और यह सही इंडेक्स पर जादुई रूप से जोड़ा जाएगा? –