2010-04-30 16 views
16

अपडेट 4 और 5 के बाद मुझे डेल्फी 2010 का पुनर्मूल्यांकन करने में दिलचस्पी है। इस बार मैं अपने कुछ कोड (छोटे पैमाने पर) को पोर्ट करना चाहता हूं ताकि यह देखने के लिए कि बड़े पैमाने पर इसे करना कितना मुश्किल है।उन लोगों के लिए कोई संकेत जो डेल्फी 7 (और नीचे) से डेल्फी 2010 में अपग्रेड करना चाहते हैं?

मुख्य मुद्दा यूनिकोड रूपांतरण के लिए ascii लगता है। इस बारे में कोई सुझाव या संसाधन जो आपको उपयोगी पाया गया है?

बहुत धन्यवाद।


संपादित करें:

इस बात अन्य लोगों के लिए मेरी खुलने और (कि अपग्रेड करना चाहते हैं) पर होगा:

http://www.embarcadero.com/images/dm/technical-papers/delphi-in-a-unicode-world-updated.pdf

Is WideString identical to String in Delphi 2009

What is the compiler version for Delphi 2010?

http://chee-yang.blogspot.com/2008/10/delphi-2009-unicode.html

ध्यान दें कि Gif (Melander द्वारा) और PNG (Martijn Saly से?) छवियों अब डेल्फी 2010 में शामिल किया जाता है आपको सही GIF इकाई का उपयोग करने के एक सशर्त का उपयोग करना होगा:

USES Windows, SysUtils, Graphics, blabla 
{$IFDEF VER150} 
    , GIFImage,  {Delphi 7} 
{$ELSE} 
    GIFImg   {Delphi 2010} 
{$ENDIF}; 

इसके अलावा, आप पीएनजी Embarcadero द्वारा प्रदान की "ठीक" करने की जरूरत है: http://talkdelphi.blogspot.com/2009_03_01_archive.html

अन्य चीजें हैं जो आप को पता है क्या तुम सच में बैकअप के लिए डेल्फी 2010 डेल्फी 2010 में इसे खोलने अपने DFM बदल जाएगा से पहले अपनी परियोजना है कि है की जरूरत है अगर आप सहेजें बटन दबाएंगे तो भी फ़ाइल करें। फॉर्म डेटा खो देगा और यह डी 7 में संकलित नहीं होगा।


अद्यतन

मैं अंत में अपग्रेड किया है। डेल्फी एक्सई में कुछ नई विशेषताएं हैं। दुर्भाग्यवश, उनमें से कुछ बिल्कुल काम नहीं कर रहे हैं (पृष्ठभूमि संकलन, यूएमएल मॉडलिंग, उदाहरण के लिए कोड अंतर्दृष्टि), दूसरों को डाउनग्रेड किया गया है (सहायता और उदाहरण के लिए)। आईडीई डेल्फी 7 के रूप में स्थिर और तेज़ नहीं है और टूल बार में वास्तविक समस्याएं हैं (बेहतर आईडीई को कस्टमाइज़ नहीं करें)। एक गंदा बग भी है जहां आईडीई में 100% सीपीयू उपयोग होता है (इन सभी मुद्दों के बारे में मेरी अन्य पोस्ट देखें)। मुझे आशा है कि अपडेट 2 और 3 में वे कुछ सबसे कड़े मुद्दों को ठीक करेंगे।

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

+1

http://stackoverflow.com/search?q=[delphi]+[unicode]+upgrade –

उत्तर

12

हम एक वेब पेज विशेष रूप से यह बहुत ही जारी करने के लिए बनाया है:

http://www.embarcadero.com/rad-in-action/migration-upgrade-center

वहाँ

आप उन वेब पृष्ठों, दस्तावेजों, वेबिनार रिप्ले, आदि जो सभी प्रवास के मुद्दे को कवर मिल सकता है।

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

+2

+1। यह एक बहुत अच्छा वर्णन है कि मैं कहां काम करता हूं, और हमारा कोडबेस निश्चित रूप से एक बड़ा है। (हमें शायद कई अलग-अलग परियोजनाओं के बीच डेल्फी कोड के करीब 5 मिलियन लाइन मिल गई हैं।) –

+0

@ निक -> क्या आप उस पृष्ठ में "यूनिकोड पर जाने पर अधिक संसाधन" अनुभाग का जिक्र कर रहे हैं? मैं देखूंगा। धन्यवाद। – Ampere

5

तीसरी पार्टी पुस्तकालयों और वीसीएल के साथ सबसे बड़ी समस्याएं हैं। यदि वे डी 2010 पर नहीं हैं, तो यह दर्दनाक हो सकता है। यूनिकोड मुद्दा तब आता है जब आप स्ट्रिंग्स या पीसीर एरे की लंबाई के साथ गणना कर रहे हैं, प्रति चरित्र एक बाइट मानते हैं। आप आमतौर पर पुरानी शैली AnsiString/AnsiChar के रूप में सबकुछ इलाज के साथ दूर हो सकते हैं। लेकिन फिर आपको यूनिकोड के लाभ नहीं मिलते हैं।यदि आपके पास यूनिकोड में कुछ भी मुश्किल नहीं है, तो यूनिकोड में बस सब कुछ करें और यदि आप आगे और पीछे स्विच करने की चिंता कर रहे हैं तो आप आगे बढ़ेंगे।

4

कोड को यूनिकोड में कनवर्ट करना आपके आप में इतना समय नहीं लेता है जब तक आप अपने तारों के साथ "मजेदार" नहीं करते। मैंने 2 सप्ताह से कम समय में कोड + 1 डेटाबेस के करीब 1 एम लाइनों को परिवर्तित किया। कोडेगियर के लोगों ने इसे बहुत आसान करने में बहुत अच्छा काम किया।

आपका कोड किसी भी बदलाव के बिना डी 2010 में पुन: संकलित हो सकता है (लेकिन कुछ टन संकेत/चेतावनियों के साथ)।

रूपांतरण से सबसे बुरी समस्या कॉल से विंडो के एपीआई में आती है जो गलत तरीके से की गई थी। उदाहरण के लिए, फ़ंक्शन GetComputerName जो आपको TChars में बफर का आकार पूछता है (जैसा कि एपीआई द्वारा निर्दिष्ट किया गया है)। Ansi में, TChar = 1 बाइट, तो लंबाई = आकार ओएफ। यूनिकोड में, अब यह सच नहीं है। इससे भी बदतर, एपीआई को कॉल विफल नहीं हो सकता है। यह सिर्फ स्मृति के कुछ मान्य भाग को ओवरराइट करेगा और बहुत बाद में दुर्घटनाग्रस्त हो जाएगा।

ओह ... और विंडोज एपीआई में अंसी और यूनिकोड के बीच उन मामूली अंतर भी हैं। उदाहरण के लिए, CreateProcess के lpCommandLine केवल उत्तर संस्करण में पढ़ा जाता है, लेकिन यूनिकोड संस्करण में पढ़/लिखता है। तो पैरामीटर के रूप में निरंतर उपयोग करके Ansi में ठीक काम किया, लेकिन यूनिकोड में Kernel32.dll में क्रैश हो जाएगा।

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

और निक होजेस से जुड़े संसाधनों को पढ़ें, वे बहुत उपयोगी हैं।

3

यूनिकोड रूपांतरण समस्याओं के लिए, लोगों की समस्याओं का सामना करने के लिए आपकी सबसे अच्छी शर्त और दूसरों ने क्या किया है Cary Jenson's White Paper: Delphi Unicode Migration for Mere Mortals प्राप्त करना है।

इसके अलावा मैं अत्यधिक Marco Cantu's "Delphi 2009 Handbook" की सिफारिश करता हूं जो मेजर 200 रिलीज में सभी परिवर्तनों का वर्णन करता है जिसमें यूनिकोड और जेनेरिक और अधिक शामिल हैं। उस पुस्तक से उनकी अधिकांश यूनिकोड सामग्री his White Paper: Delphi and Unicode में है।

+0

जेन्सेन श्वेत पत्र पढ़ने के दौरान, शायद वाक्यों को अनदेखा करना चाहिए "एक बार आपका आवेदन डेल्फी 200 9 या बाद में चल रहा है, तो देखें कि जब आप जानबूझकर अपने यूजर इंटरफेस के माध्यम से अपने डेटाबेस में यूनिकोड चरित्र जोड़ते हैं तो क्या होता है।" या इससे भी बेहतर, उन्हें अनदेखा न करें, उनके बारे में सोचें कि उनके साथ क्या गलत है। – mghie

+0

एक अन्य मणि: "यह पता चला है कि यूनिकोड डेटा दर्ज करने वाला कोई उपयोगकर्ता उस समस्या से कम नहीं है जो उपयोगकर्ता प्रवेश करता है, कहता है, गलत तिथि। कचरा, कचरा बाहर।" – mghie

2

हमने डेल्फी 2007, 200 9 और अब 2010 के माध्यम से डेल्फी 7 से अपग्रेड किया है! निम्नलिखित पाए गए सबसे बड़े मुद्दे हैं।

  • थ्रेड बदल गए हैं, फिर से शुरू और निलंबित होने के साथ।
  • यूनिकोड
  • परियोजनाओं की संरचना को बदल दिया है और पीछे की ओर संगत
  • dfms की संरचना को बदल दिया है नहीं कर रहे हैं और न पीछे की ओर संगत

आशा इस मदद करता है।

+0

वाह, वाह, वाह! मुझे अन्य सभी मुद्दों के बारे में पता था, लेकिन "डीएफएमएस की संरचना बदल गई है और पीछे की तरफ संगत नहीं है"। क्या आपका मतलब है कि एक बार जब मैंने डी 2010 में एक प्रोजेक्ट लोड और सहेजा है, तो मैं डी 7 पर वापस नहीं जा सकता ????? – Ampere

+0

आप वापस जा सकते हैं - आपको बस परियोजना के विकल्पों को फिर से भरना होगा। .dfg फ़ाइल में D7 स्टोर्स विकल्प, D2010 - .dproj फ़ाइल में। आप वापस जाना चाहते हैं - आप .dproj हटाएं और .dpr/.dpk खोलें। – Alex

+0

मैंने वापस जाने की कोशिश नहीं की है, लेकिन मुझे याद है कि आप डेल्फी 7 में डी 2009 डीएफएम नहीं खोल सकते हैं। – Mmarquee

1

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

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

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