2010-11-13 10 views
8

पुनर्प्राप्त करने के लिए लंबे समय तक मैंने ऑब्जेक्ट गुणों को सहेजने और लोड करने के लिए अपने स्वयं के प्रारूपों को लॉन्च किया है, लेकिन इसे फिर से देखने के लिए मैं डेल्फी के अपने टेक्स्ट डीएफएम प्रारूप का उपयोग करने के बारे में सोच रहा हूं। मुझे पता है कि यह वास्तव में एक 'आंतरिक' प्रारूप है, लेकिन इसके लिए पाठक अब बहुत अच्छी तरह से परिभाषित प्रतीत होता है और यह सभी प्रकार की संपत्ति के साथ copes। क्या किसी को संभावित नुकसान के बारे में कोई टिप्पणी है?डेल्फी टेक्स्ट डीएफएम प्रारूप का उपयोग अपनी खुद की दुकान के लिए और

उत्तर

15

मैं वास्तव में यह नहीं कहूंगा कि डीएफएम एक 'आंतरिक प्रारूप' है। निश्चित रूप से डेल्फी इसे फॉर्म और डेटामैड्यूल के लिए आंतरिक रूप से उपयोग करता है, लेकिन स्ट्रीमिंग करने वाले ट्रेडर और TWriter कक्षाएं सार्वजनिक रूप से सुलभ और यहां तक ​​कि दस्तावेज भी हैं। इसलिए वे स्पष्ट उपयोगकर्ताओं के लिए स्पष्ट रूप से भी लक्षित हैं।

अब, संभावित समस्या तब होती है जब आप स्ट्रीम को सहेजते हैं और बाद में धाराओं में से किसी एक वर्ग में परिवर्तन होता है ताकि स्ट्रीम अब और संगत न हो। यदि आपने D77 + D7 (गायब संपत्ति) में सहेजे गए फॉर्म को खोलने का प्रयास किया है तो आपने इसे डेल्फी में देखा होगा। लेकिन अगर ऐसा होता है, तो इसे हल करना बहुत मुश्किल नहीं है। आपको एक अपवाद मिलेगा जो समस्या का कारण बनने वाली सटीक संपत्ति की रिपोर्ट करेगा। आपको उन सभी वर्गों को भी पंजीकृत करना होगा जिन्हें आप RegisterClass के साथ स्ट्रीम करना चाहते हैं।

डीएफएम बाइनरी या टेक्स्ट प्रारूप में संग्रहीत किया जा सकता है। भले ही आप इसे बाइनरी स्टोर करते हैं, फिर भी आप इसे पाठ में परिवर्तित कर सकते हैं (ObjectBinaryToText का उपयोग करके), एक बार टेक्स्ट प्रारूप में, इसे ठीक करना आसान है।

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

दीर्घायु के लिए, आप अभी भी नवीनतम डेल्फी में डी 1 के साथ डीएफएम को सहेज सकते हैं। इसलिए जब तक आप पिछड़े संगतता को ध्यान में रखते हैं, तब तक आपको डरने के लिए कुछ भी नहीं है।

निष्कर्ष में, किसी भी विशेष प्रारूप, डीएफएम, एक्सएमएल, जेएसओएन, आपकी पसंद का विकल्प ... वास्तव में दीर्घायु को प्रभावित नहीं करता है। उन्हें सभी को समानता की समानता की आवश्यकता होती है।

प्रारूप चुनने के लिए कारण के बारे में अधिक निर्णय के साथ क्या करना है:

  • अन्य एप्लिकेशन/सेवाओं
  • आकार/गति/मानव पठनीयता

साथ अंतर लेकिन तुम नहीं किया प्रश्न में से किसी का भी उल्लेख करें।

तो मैं अपने स्वयं के रोल पर डीएफएम का उपयोग करने का सुझाव देता हूं, क्योंकि इसका मतलब है कि बनाए रखने के लिए कम कोड होगा।

+0

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

+0

अच्छा जवाब, धन्यवाद। मैं तुम्हारा बिंदु भी लेता हूं, कार्ल। –

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