2009-10-02 5 views
5

से परियोजना को ले जाएं मुझे 1 99 8/99 में डेल्फी 3 में लिखा गया एक प्रोजेक्ट दोबारा खोलने के लिए कहा गया है और तब से यह स्थिरता से चल रहा है। मेरे पास उम्र बढ़ने वाली विंडोज 98 मशीन पर डेल्फी 3 कोड बेस है जो इस परियोजना को जीवित रखने के लिए मौजूद है। जाहिर है, मैं किसी भी बड़े संशोधन के उपक्रम से पहले 21 वीं शताब्दी में स्रोत कोड आधार लाने के लिए चाहता हूं।डेल्फी 3 से डेल्फी 2010

मुझे खुशी है कि डेल्फी 2010 (मैं वर्तमान में 2007 में) डेल्फी 2 से परियोजनाओं को आयात करने में सक्षम होने का दावा करता हूं। क्या किसी को डेल्फी 3 से बड़ी परियोजनाओं का आयात करने का कोई अनुभव है? क्या मैं उम्मीद कर सकता हूं कि यह एक आसान संक्रमण हो या मुश्किल हो?

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

+0

आपको वास्तव में पहले मूल्यांकन करना चाहिए कि क्या डेल्फी 2010 के साथ एक पुनर्मूल्यांकन वास्तव में "21 वीं शताब्दी में" ऐप लाएगा। एक आधुनिक ऐप हालिया नियंत्रणों और (विस्टा-शैली) संवादों का उपयोग करता है और इस प्रकार पूरी तरह से अलग दिखता है, दृश्य शैलियों का समर्थन करता है, सीमित उपयोगकर्ता खातों के साथ काम करता है, ठीक से यूनिकोड का समर्थन करता है (यह डेल्फी 200+ के साथ संकलित करने से कहीं अधिक है), इसमें कोई कठिनाई नहीं है -कोडेड पथ, ... शायद बदला जा सकता है और तय किया गया है कि डेल्फी 2010 के साथ एक पुनर्लेख एक बेहतर प्रस्ताव है? – mghie

+3

@mghie शायद उनकी योजनाएं विकास वातावरण को एकजुट करने और पुन: लिखने या भारी परिवर्तनों पर आने से पहले इसका उपयोग करने के लिए कोडबेस को डी 2010 में लाती हैं। –

+0

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

उत्तर

6

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

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

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

अच्छी खबर यह है कि घटक को प्राप्त करने के बाद आपके कोड को ठीक काम करना चाहिए/क्लॉज को सही करने के लिए उपयोग करना चाहिए। यदि आप सीधे डेल्फी 2010 में जाते हैं, तो आपका एकमात्र अन्य मुद्दा यूनिकोड होगा और संकलक त्रुटियों और चेतावनियों के माध्यम से उन सभी को इंगित करने का शानदार काम करता है।

+0

Thx। डब्लूआरटी को "कुछ असंगतताएं हो सकती हैं जो किसी घटक को लोडिंग में विफल होने का कारण बन सकती हैं", क्या आप ऐसी किसी भी असंगतताओं का उल्लेख कर सकते हैं जिन्हें आपने अनुभव किया है? –

+0

ऐसी एक असंगतता एक संपत्ति परिवर्तन होगी जहां नए घटक या तो संपत्ति का नाम बदल चुके हैं या अब इसका समर्थन नहीं करते हैं। यह फ़ॉर्म को एक त्रुटि के साथ लोड करने में त्रुटि उत्पन्न करेगा जो संभावित रूप से फ़ॉर्म से घटक को हटा देगा। डीएफएम मैन्युअल रूप से संपादन करके आप व्यवहार को सही कर सकते हैं और फ़ॉर्म को पूरी तरह से लोड कर सकते हैं। – skamradt

+3

डीएफएम फ़ाइल रूपांतरण उपयोगिता को "रूपांतरित" कहा जाता है। – dummzeuch

5

जैसा कि आपके पास डी 2007 है और यह मानते हुए कि ये सभी घटक सेट D2007 dcus के साथ आते हैं, मैं आपको सलाह दूंगा कि पहले डी 2007 पर कोडबेस को दोबारा खोलने का प्रयास करें। और उसके बाद, वास्तविक वीसीएल की यूनिकोड सुविधा के कारण डी 2010 पर जाएं - जो कुछ माइग्रेशन समस्याएं पैदा कर सकता है (जिसे मैं यहां पर चर्चा नहीं करूंगा क्योंकि यह वेब पर गहराई से चर्चा की गई है और here on SO)।

मैं कहूंगा कि क्योंकि डी 5 और डी 7 (बिल्कुल रिकॉर्ड नहीं किया गया) के बीच कहीं भी आरटीएल का यूनिट पुनर्गठन हुआ (Variants.pas इकाई के निर्माण के साथ और कई ओटीएपीआई इकाइयों ने नाम बदल दिए, आदि)। तो वह होगा जहां आपकी पहली समस्याएं उत्पन्न होंगी। संपादित करें: तैनात किए जाने के लिए लाइसेंस रहित कोड से बचने के लिए न केवल वेरिएंट स्थानांतरित हो गए हैं, लेकिन बहुत अधिक आईडीई एकीकरण सामग्री भी हैं। यदि आपके पास कुछ ओटीएपीआई कोड है (उदाहरण के लिए, कोड जो विरासत रूपों पर प्रकाशित गुणों की अनुमति देता है), तो उसे पैकेज प्रोजेक्ट में स्थानांतरित करने की आवश्यकता होगी।

skramradt के रूप में कहा, तुम, ....

उसके बाद द्विआधारी DFM बात से निपटने के लिए हो सकता है सभी कार्यों अगर, यूनिकोड बात करने के लिए जाना। ऐप के आधार पर, यह आसान हो सकता है या नहीं। मेरे लिए, बहुत परेशान नहीं। लेकिन मुझे पता है कि दूसरों को मुझसे ज्यादा समस्याएं आ रही हैं।

+0

लेकिन मेरी समझ यह है कि कोई उम्मीद नहीं है कि डी 3 प्रोजेक्ट डी 2007 में भी खुल जाएगा जबकि डी 2010 ऐसा करने में सक्षम होने का दावा करता है। मुझे लगता है कि परिवर्तित आरटीएल के लिए रिफैक्टरिंग डी 2010 अपग्रेड प्रक्रिया का हिस्सा है। –

+0

डी2007 और डी 2010 दोनों डी 3 परियोजनाएं खोलेंगे, या कम से कम * उन्हें खोलना चाहिए। –

+0

Thx। क्या मुझे गलत समझा गया कि पिछली संस्करण आयात सुविधा डी 2010 में नई है? –

3

बस आपको आश्वस्त करने के लिए, मैंने हाल ही में सॉफ़्टवेयर को परिवर्तित किया है जिसे मैं डेल्फी 4 से डेल्फी 200 9 तक विकसित कर रहा हूं, यूनिकोड क्षमताओं को प्राप्त करने के लिए, और मेरे पास कई समस्याएं थीं, लेकिन वे कुछ हफ्तों के भीतर सभी सुलभ हो गईं।

ध्यान देने योग्य एक बात: यदि आप किसी तीसरे पक्ष के पैकेज का उपयोग करते हैं, तो सुनिश्चित करें कि उनके पास डेल्फी 2010 संस्करण उपलब्ध है जिसे आप कनवर्ट करने से पहले अपग्रेड कर सकते हैं। डेल्फी 200 ठीक रहेगा, लेकिन मैं डी 2010 में पुराने पैकेज का उपयोग करने की कोशिश नहीं करता।

0

मैं पुष्टि करता हूं कि अन्य क्या कह रहे हैं: डी 3010 को डी 3010 में कनवर्ट करना आम तौर पर आपके कोड के संबंध में आसान है।

मैं दो कठिनाइयों देखें:

  1. आप, सामान्य बफर के रूप में स्ट्रिंग इस्तेमाल किया वर्णों से कुछ और भंडारण।
  2. आपका कोड मानता है कि आकार (char) 1 है, जिसका उपयोग लंबाई() है जब SizeOf() का उपयोग किया जाना चाहिए या विपरीत।

सबसे कठिन हिस्सा तीसरे पक्ष के घटक हैं।

ऐसा लगता है कि आप अभी भी उपयोग कर रहे सभी घटकों को डी 2010 के लिए मौजूद हैं, यह एक अच्छा बिंदु है। लेकिन ऐसा लगता है कि उनका इंटरफ़ेस बदल दिया गया है और निश्चित रूप से कुछ कोड परिवर्तनों की आवश्यकता होगी।

0

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

+0

क्या आपने डी 2010 में परियोजना को मैन्युअल रूप से फिर से बनाने की कोशिश की है? अर्थात। डेल्फी को एक नई परियोजना बनाने दें और बाद में सभी इकाइयों को जोड़ें और आवश्यकतानुसार सभी परियोजना विकल्पों को सेट करें। –

1

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

4

यहाँ में किया कुछ नोट हम डेल्फी 2010 के उन्नयन के बारे में

  1. निष्पादनयोग्य में पालन किया जाता हैं Delphi2010 डेल्फी 3 द्वारा संकलित की तुलना में लगभग 3 गुना अधिक बाइट्स हैं।
  2. किसी भी संकलन के परिणामस्वरूप डेल्फी 3 की तुलना में अधिक चेतावनियां और संकेत मिलेगा। अच्छा संकेत सभी संकेतों और चेतावनियों को हटाना है।
  3. मुझे कई दूषित पास्कल फ़ाइल मिली है जो डेल्फी 3 में ठीक है लेकिन डेल्फी -2010 में नहीं है। दृश्य में कोई समस्या या अंतर दिखाई नहीं देता है। हालांकि संकलन त्रुटियां गलत लाइन संख्या पर त्रुटि को स्पष्ट रूप से इंगित करती हैं। मेरे उदाहरणों में यह मुद्दा सीआर/एलएफ से संबंधित था, मेरे डेल्फी में केवल एक सीआर था। हल करने और वास्तविक समय बर्बाद करने में एक मुश्किल समस्या है। हालांकि पाठ नोटपैड में या WinHex.exe का उपयोग करके देखा जा सकता है। मैंने PARSER.EXE नामक एक प्रोग्राम लिखा है, जो इन नियंत्रण वर्णों की पहचान करने की अनुमति देता है।एक बार जब आप जानते हैं कि नियंत्रण वर्ण कहां हैं, तो इन फ़ाइलों को नोटपैड में संपादित करने का यह सबसे अच्छा तरीका है।
  4. AnsiString। डेल्फी 2010 अब AnsiStrings, एमबीसीएस और वाइडस्ट्रिंग्स, (यूनीकोड) का उपयोग करता है। डेल्फी 3 के विरोध में जो एएससीआईआई स्ट्रिंग का इस्तेमाल करता था। मानक डेल्फी 2010 कार्यान्वयन तारों का उपयोग यूनिकोड और चार्स के रूप में 16 बिट वर्णों के रूप में करता है। अब यह सुनिश्चित करना आवश्यक है कि कई 8 बिट ASCII तारों को AnsiStrings के रूप में परिभाषित किया गया है। स्पष्ट रूप से पुराने डीएलएस जिनमें पीसीएचआरएस के साथ इंटरफेस परिभाषित थे, अब पेंसीकर की आवश्यकता है।
  5. कोड निम्नलिखित कारणों से डेल्फी प्लेटफ़ॉर्म के बीच अंतर-परिवर्तनीय नहीं है
  6. डेल्फी 2010 में अतिरिक्त कार्य और परिवर्तनीय प्रकार जैसे AnsiChar, AnsiStrings हैं।
  7. फॉर्म संस्करणों के बीच संगत नहीं हैं क्योंकि बाद वाले डेल्फी संस्करणों में अतिरिक्त गुण हैं।
  8. डीसीएस संस्करणों के बीच संगत नहीं हैं।
  9. पैकेज संस्करणों के बीच संगत नहीं हैं। डेल्फी 2010 में कोई क्रिस्टल रिपोर्ट नहीं है, इसलिए आपको इसे अलग से खरीदना पड़ सकता है। इस्तेमाल किए गए किसी भी अन्य पैकेज को लागत पर उन्नयन की भी आवश्यकता हो सकती है।
  10. रीडफाइल, लिखितफाइल, गेटिकिकउंट जैसे कई फ़ंक्शन अब डीडब्ल्यूओआरएस के रूप में पैरामीटर पर जोर देते हैं, जबकि डेल्फी 3 अधिक सहनशील था। इनमें से कुछ कार्य उच्च डिस्क क्षमताओं से जुड़े हुए हैं।
  11. पॉपअप मेनू। इन्हें ऑटोहोटी नामक एक नई संपत्ति है। यह मैनुअल पर सेट किया जाना चाहिए। यदि यह डिफ़ॉल्ट रूप से सेट किया गया है, तो कैप्शन में '&' हॉट कुंजी कार्यक्षमता प्रदान करने के लिए डाला जाएगा।
  12. कर्सर। कर्सर का उपयोग करने की विधि बदल गई है।
  13. ऐसा प्रतीत होता है कि डेल्फी -2010 में पूरी तरह से ढेर सारे फीचर्स हैं जो इसे उपयोग करने में आसान बनाने के खर्च पर जोड़े गए हैं। शायद डेल्फी 3 का उपयोग करने के लिए एक बेहतर और अधिक आसान इंटरफ़ेस था।
  14. सहायता। शायद डेल्फी 3 से बेहतर है। लेकिन मदद जानकारी खोजने की कोशिश कर रहे कुछ मिनटों के लिए गायब हो रहा है। इंटरेक्टिव मदद एक उपद्रव है।
  15. BorlandMM.dll विंडोज 2000 पर डेल्फी 2010 अनुप्रयोगों के साथ काम नहीं करता है। यदि आप इस डीएलएल का उपयोग करना चाहते हैं तो आपको पीसी के एक लोड को अपग्रेड करना पड़ सकता है।

मेरे पास अपग्रेड करने के लिए लगभग 100 एप्लिकेशन डीएलएस और COM सर्वर हैं। शायद लगभग 12 सप्ताह कमीशन के साथ काम करते हैं। उम्मीद है की यह मदद करेगा।