मैं एक ऐसी परियोजना पर काम कर रहा हूं जो कई संकलित डेल्फी अनुप्रयोगों (20 से अधिक exe और dll के) से बना है और मुझे 60+ छवियां साझा करने की आवश्यकता होगी (16x16, 24x24, 32x32 , ...) उन सभी के बीच।कई अनुप्रयोगों के बीच छवियों को साझा करने का सबसे अच्छा तरीका
मैं सभी अनुप्रयोगों के बीच चित्रों को शेयर करने के दो अलग अलग तरीकों पर हालांकि है, लेकिन मुझे यकीन है कि जो है बेहतर नहीं कर रहा हूँ:
आइडिया 1:
एक संसाधन बनाएं केवल डीएलएल प्रोजेक्ट, जिसमें .res फ़ाइल के संसाधन लिंक संदर्भ शामिल हैं जिसमें मेरी सभी छवियां हैं। प्रत्येक एप्लिकेशन बदले में डीएलएल लोड करेगा और जरूरी छवियों को पढ़ेगा, जिसे इसकी आवश्यकता के आधार पर टीआईमेजलिस्ट या टीआईमेज में इसकी आवश्यकता हो सकती है।
पेशेवर: छवियों को अपने मूल स्वरूप में भंडार में रखने की अनुमति देता है।
विपक्ष: मैं डिजाइन समय पर छवियों को देखने में सक्षम नहीं हूं क्योंकि उन्हें केवल रन टाइम पर ही लोड किया जाएगा। मुझे स्थिरांक की एक ही संख्या बनाना होगा क्योंकि छवियां हैं या छवियों के समान मूल्यों के साथ एक सेट का उपयोग करें ताकि प्रत्येक छवि को संसाधन फ़ाइल पर इसके नाम से स्वतंत्र रूप से संदर्भित किया जा सके।
आइडिया 2:
एक डाटा मॉड्यूल जो एक बीपीएल के रूप में संकलित और सभी आवेदनों पर एक रन-टाइम पैकेज के रूप में शामिल किया गया है बनाएँ। मैं छवियों को कई TImageList (छवि आकार के आधार पर) में या एक TPngImageList (जो एक घटक पर कई आकारों की छवियों की अनुमति देता है) में जोड़ देगा।
पेशेवर: मैं इस डेटा मॉड्यूल को उन सभी अनुप्रयोगों में जोड़ सकता हूं जो मुझे चाहिए और डिज़ाइन-टाइम पर उन सभी छवियों को देख सकेंगे जिन्हें मुझे उपयोग करने की आवश्यकता हो सकती है।
विपक्ष: सभी छवियों को स्मृति में लोड किया जाएगा भले ही मुझे केवल एक का उपयोग करने की आवश्यकता हो। मुझे यह सुनिश्चित करने की ज़रूरत है कि छवियों का क्रम कभी भी TImageList/TPngImageList में छवियों को जोड़ने/संशोधित करते समय कभी नहीं बदला जाता है। सभी छवियों को एक .dfm में संग्रहीत किया जाएगा।
आइडिया 3: (नई)
अन्य अनुप्रयोगों जो भी संकलित exe के बीच छवियों को साझा करने की जरूरत को देखने के बाद, मैं अभी तक एक और विचार किया है। सभी साझा छवियों को एक उप-फ़ोल्डर पर सादे पीएनजी/आईसीओ फाइलों के रूप में सहेजें जहां संकलित फाइलें हैं (उदाहरण के लिए डेटा)।
पेशेवर: स्मृति में सभी छवियों को लोड करने की आवश्यकता नहीं है, मैं केवल उन लोगों को प्राप्त कर सकता हूं। यह विशेष रूप से महत्वपूर्ण हो सकता है यदि छवियों की कुल संख्या बड़ी है (एक विधि जो इस विधि का उपयोग करती है, डेटा उप-फ़ोल्डर पर 1400 छवियां होती हैं)।
विपक्ष: छवियां किसी के भी दिखाई/उपलब्ध होंगी। उपयोगकर्ता मशीन पर थोड़ा और डिस्क स्थान का उपयोग कर सकते हैं।
मैं इन दो विचारों या किसी अन्य सुझाव पर टिप्पणियों के बारे में पूछना चाहता हूं कि इसे बेहतर तरीके से कैसे पूरा किया जाए।
धन्यवाद!
आइडिया 2 के संबंध में: क्या आप उन छवियों को मुक्त करने में सक्षम होंगे जिन्हें आपको रन-टाइम पर आवश्यकता नहीं होगी? – Jeff
मुझे नहीं लगता कि मैं उन छवियों को आसानी से मुक्त कर सकता हूं जिन्हें मुझे रन-टाइम पर आवश्यकता नहीं है, मुख्य रूप से क्योंकि यदि मैं उन लोगों को हटा देता हूं जिन्हें मुझे TImageList से आवश्यकता नहीं है तो उसके पास किसी भी नियंत्रण में सही छविइंडेक्स नहीं होगा जो TImageList का उपयोग करता है। आपके उत्तर के लिए – smartins