2011-04-17 17 views
33

हमारी कंपनी के पास एक सॉफ्टवेयर है जो 10 से अधिक वर्षों से विकास में रहा है, इसलिए वहां कुछ वास्तव में दिनांकित चीजें हैं। यह अभी भी काफी कार्यात्मक और सबकुछ है, लेकिन मुझे डेल्फी एक्सई पर नई विशेषताएं दिखाई देती हैं और यह मुझे स्विच करना चाहता है। समस्या यह है कि स्रोत कोड स्वयं 300 एमबी से अधिक है। फाइलें (घटक के साथ 1 जीबी कुल, आदि)।डेल्फी 7 से डेल्फी एक्सई तक किसी प्रोजेक्ट को माइग्रेट करना कितना मुश्किल है?

हम कस्टम घटकों, पुराने जेवीसीएल सामान और नवीनतम डेवेक्सप्रेस का उपयोग कर रहे हैं।

अगर मैं डेल्फी 7 से डेल्फी एक्सई में माइग्रेट करने का निर्णय लेता हूं तो मैं कितनी मेहनत कर सकता हूं?

धन्यवाद।

+3

यह काफी आसान होना चाहिए, यह आपकी समय बड़ी होगी क्योंकि आपकी परियोजना बड़ी है –

+0

विषयपरक प्रश्न है। हाँ यह मुश्किल है, लेकिन नहीं, ज्यादा नहीं। – user422039

+0

@ user422039 - मुझे लगता है कि यह है, लेकिन यहां दिए गए उत्तरों ने मुझे बहुत मदद की, रूपांतरण के समय आने पर मैं बेहतर तरीके से तैयार रहूंगा। आप सभी को धन्यवाद। – Rosenberg

उत्तर

28

एकमात्र असली समस्या यूनिकोड में रूपांतरण है। आपको सीखना चाहिए कि डेल्फी में यूनिकोड समर्थन कैसे कार्यान्वित किया जाता है - मार्को कैंटू से शुरू White Paper: Delphi and Unicode

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

+1

वाह, बहुत जानकारीपूर्ण, धन्यवाद! – Rosenberg

15

कुछ छोटे उपकरण या तो किसी भी संशोधन करने की आवश्यकता के बिना माइग्रेट करते हैं, या इसे चलाने के लिए केवल कुछ यूनिकोड फिक्सेस।

हालांकि, यदि आपका कोडबेस उतना विशाल है जितना आप समझा रहे हैं, तो आपको पूरी तरह से भरोसा नहीं करना चाहिए कि यहां कोई भी आपको क्या बताने जा रहा है। बस एक्सई की एक प्रति प्राप्त करें और कोड लोड करें। यह देखने के लिए कि आप कितने प्रयास किए जा रहे हैं, इसके बारे में महसूस करने के लिए आप किन समस्याओं को चलाते हैं।

इस समय मैंने अपने सभी कोड को XE (यहां तक ​​कि पुरानी परियोजनाओं) में पोर्ट किया है। मैं जितनी ज्यादा हो सके पुस्तकालयों का पुन: उपयोग करता हूं, इसलिए जब मैंने उनमें से अधिकांश को परिवर्तित कर दिया है, तो डेल्फी 7 से यूनिकोड डेल्फी के "पोर्टिंग" अनुप्रयोग आमतौर पर पुस्तकालयों में अपडेट किए गए इंटरफेस से निपटने के लिए या फिर एक दोहराव वाला कार्य था, या संकलक त्रुटियों और चेतावनियों को ठीक करें।

सबसे आम त्रुटियों है कि मैं का सामना करना पड़ा है:

  • यूनिकोड सामान। इसमें 90% समय लगेगा। यह कष्टप्रद है यदि कोड बहुत कम स्तरीय स्ट्रिंग हैंडलिंग करता है, लेकिन कुछ समस्याएं कुछ टाइपकास्ट जोड़कर आसानी से तय की जा सकती हैं।

  • जब आप c in ['a'..'z'] का उपयोग करते हैं तो कंपाइलर बिट्स। आपको यूनिकोड तारों के लिए CharInSet() का उपयोग करना होगा।

  • यदि आप शॉर्टडेट फ़ॉरमेट सेट करते हैं, तो आपको एक कंपाइलर चेतावनी मिल जाएगी कि आपको इसके बजाय FormatSettings.ShortDateFormat का उपयोग करना चाहिए। नए कोड में यह एक अच्छा विचार है। यदि आप पोर्टिंग कर रहे हैं, तो शुरुआत में इसे अनदेखा करें यदि आप बस जाना चाहते हैं।

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

+0

धन्यवाद, मुझे तब बहुत से सामना करना पड़ेगा। मैं सिर्फ चारों ओर घूम रहा हूं क्योंकि हमें डेल्फी एक्सई खरीदना होगा। – Rosenberg

5

मेरी परियोजना कोड की लगभग दस लाख लाइनें हैं और मैंने हाल ही में सीबी 9 से एक्सई तक पोर्ट किया है। काम की मात्रा को कम करने के लिए मैंने पहले बहुत कुछ फिर से लिखा था, इसलिए मैं अब तीसरे पक्ष के घटक पैक पर निर्भर नहीं था, फिर ध्यान से संबंधित स्ट्रिंग से संबंधित सब कुछ (यूनिकोड) पर चला गया और फिर केवल XE में स्थानांतरित हो गया। तैयारी बहुत काम था, वास्तविक बंदरगाह अपेक्षाकृत आसान था।

+0

आह, यह एक अच्छा विचार है, मेरा भी बहुत बड़ा है। मुझे सबसे बड़ी समस्या का सामना करना पड़ता है कस्टम घटक, वे विशेष रूप से डेल्फी 7 के लिए बनाए गए थे, और वे सामान्य नियंत्रण (संपादन, लेबल, बटन इत्यादि के संपादित संस्करण) की विविधताएं हैं। कस्टम घटकों का सबसे बड़ा कारण एक संपत्ति जोड़ रहा था जो एसक्यूएल से अपना कैप्शन पढ़ता था, इसे स्थानीयकरण रिज़ॉर्ट के रूप में लागू किया गया था, जिसे मैं दिनांकित करता हूं। – Rosenberg

+0

जो –

+0

पर कोई समस्या नहीं होगी, चिंता न करें, डेल्फी की स्थानीयकरण तकनीक डी 7 के बाद टूट गई थी और XE तक तय नहीं किया गया था। इस संबंध में आपने कुछ नया याद नहीं किया। –

6

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

+0

मैं माइक्रोसॉफ्ट एसक्यूएल सर्वर 2008 SQL_Latin1_General_CP1_CI_AS का उपयोग कर रहा हूं, मुझे नहीं लगता कि मुझे इसके साथ समस्याओं का सामना करना पड़ेगा, क्या मुझे चाहिए? – Rosenberg

+0

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

6

मैं उन रूपांतरणों में से कुछ कर रहा हूं।

आपको अपना वर्तमान कोड बेस टेस्टेबल बनाकर तैयार करना चाहिए। पसंदीदा इकाई परीक्षणों का अधिमानतः उपयोग करना, लेकिन कम से कम एक अच्छी अंत उपयोगकर्ता परीक्षण योजना है।

फिर आपको सबसे बड़े हिस्से की योजना बनाना चाहिए: आपके ऐप और आपके डेटाबेस दोनों के लिए यूनिकोड रूपांतरण।

अंत में वहाँ कम प्रमुख हैं, लेकिन संभवतः बहुत समय लगता पहलुओं:

  • अगर आप BDE का उपयोग कर रहे हैं, इस बार यह से छुटकारा पाने के लिए है
  • डेल्फी XE डेल्फी 7 से ज्यादा सख्त है
  • 3 पार्टी पुस्तकालय संस्करणों कि काफी कुछ संस्करणों को टक्कर और आम तौर पर अब तक कम से पिछड़े संगत VCL से कर रहे हैं,

जब आप इसे मोड़ा है यह चीजों को बदलने के लिए समय आ गया है: चूंकि आपने पूरे कोड बेस को देखा है, अब आप जानते हैं कि आपके कमजोर बिंदु कहां हैं, इसलिए आप उन्हें दोबारा शुरू कर सकते हैं और इससे पहले की तुलना में बेहतर ऐप प्राप्त कर सकते हैं।

0

यह माइग्रेशन निष्पादित करने के लिए निश्चित रूप से एक चुनौती है। लेकिन अच्छी योजना बनाने की जरूरत है!

हमें पहले उन सभी संभावित घटकों को खोजने की आवश्यकता है जिन्हें कोड के साथ माइग्रेट करने की भी आवश्यकता है। यदि डेल्फी 7 प्रोजेक्ट में तीसरे पक्ष के घटक उपयोग किए जाते हैं जो उपलब्ध नहीं हैं तो आगे बढ़ने के लिए यह काफी जटिल है। दूसरा, यूनिकोड से संबंधित अन्य प्रकार का रूपांतरण, जो काफी आसान है। और अंततः हमें अन्य सहायक पुस्तकालयों, बीडीई, और डाटाबेस एडैपटर को जगह में लाने की आवश्यकता है।

रिच यूजर इंटरफेस के लिए, डेल्फी FireMonkey का उपयोग किया जा सकता है।

Delphi बेहतर और बेहतर हो रहा है क्योंकि अब यह डेस्कटॉप से ​​वेब तक मोबाइल एप्लिकेशन विकास का समर्थन कर रहा है।

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