لديه أي شخص يعاني من تشغيل تطبيق D2007 + TNTControls إلى D2009؟

StackOverflow https://stackoverflow.com/questions/393641

سؤال

لدي مشروع كبير إلى حد ما (مجاني) مكتوب مع دلفي 2007 الذي يستخدم كل من TntUnicodeControls و ال TntLXControls مكتبة وأنا أخطط للانتقال إلى دلفي 2009.

لسوء الحظ، أنا أستخدم تلك المكتبات في كل مكان في مشروعي:

  • استبدال عناصر تحكم VCL لتوفير إمكانية Unicode
  • Win32 Wriapp API (معظمهم لمقارنة السلاسل)
  • تحسينات ميزة TntLXForms, TntLXRegistry, ...
  • مكونات الطرف الثالث التي تستخدم TntControls. وبعد (virtualtrees، sptbxlib، تحديثات D2009 متوفرة)

هل لديك أي خبرة و / أو اقتراحات في نقل مثل هذا المشروع إلى دلفي 2009. هل من المستحسن التبديل أولا إلى (تجاري) TMS ضوابط يونيكود؟

هل كانت مفيدة؟

المحلول

يمكنني المساعدة في بعض هذا، كما أقوم بتنفيذ تطبيق Builder C ++ يستخدم TNT من 2007 إلى 2009. يتأخر التبديل إلى Unicode في D2009 ومرحبا بكم. ومع ذلك، من المؤسف أن الانتقال ربما يكون أسهل بالنسبة لأولئك الذين لا يحتاجون إلى Unicode في الماضي، وربما لا يزالون لا يفعلون ذلك. إذا كنت بحاجة، فأنت بحاجة إلى Unicode واستخدمت تحكم TNT عظيم TNT TNOY Wolbrink لتزويده، لديك وظيفة أكثر تعقيدا إلى حد ما ...

والخبر السار هو أن هناك نسخة جديدة من TNTControls من برنامج TMS الذي يدعم D2009. لم أتطلع إلى ذلك، لكنني أتوقع أن تكون مجرد طبقة "واجهة" على مكونات VCL الأصلية لتخفيف قابلية النقل. كنت أفكر في أنه إذا تم إعادة بناء مكتباتك الأخرى لاستخدامها.

ومع ذلك، قد تكون أفضل عودة إلى عناصر تحكم VCL الأصلية، والسبب هو أنواع السلسلة. استخدمت التحكم في TNT دائما Widestring لتمرير سلاسل Unicode ذهابا وإيابا، وقد يكون لديك استخدام Widestring منتشر من خلال التعليمات البرمجية الخاصة بك. سيعمل ذلك، لكنه ليس مثاليا مثل WidString يجب أن يستخدم فقط من أجل COM Interop لأنه "يلف" نوع COM BSTR. سلاسل Unicode الأصلية في D2009 تحسب المرجعية ويجب أن تكون أسرع بكثير.

إذا قررت استبدال مكونات TNT مع VCL Holated الأصليين، فيمكنك استخدام أمر gexperts "استبدال المكونات" - أو، ربما أسهل، قم بإجراء بحث واستبدال ملفات .dfm و .pas (التي لديك في نموذج النص، أليس كذلك) لاستبدال TTNT مع T.

نصائح أخرى

تثبيت gexperts. هناك "استبدال مكون" IDE Addin الذي يمكن أن يساعد في تحويل TTNTXXX إلى عناصر تحكم TXXXX. حاول مرة واحدة، وإذا كان الأمر جيدا فقط تحقق من "استبدال EVRYWhere في المشروع".

يمكن إعادة ترجمة SPTBX و Virtualtries إلا - كلاهما يدعم D2009.

إذا كنت قد استخدمت مغلفة Winapi فقط للاتصال unicode API-S يجب أن تعمل في D2009 أيضا.

هذا يترك لك عناصر تحكم TNTLX (TNTLXForms، tntlxregistry، ...). نظرا لأنهم غير مدعومين، فقد يكون الأمر وقتا طويلا لتغييرها على أي حال.

أوصي بالموارد التالية:

MARCO CANTU's Delphi 2009 كتيب الفصل 3 (Porting to Unicode)http://www.marcocantu.com/dh2009/

مقالات نيك هودجز (دلفي في عالم يونيكود)http://blogs.codegear.com/nickhodges/2008/11/20/39149.

أعتقد في كلتا الحالتين ستكون الكثير من العمل. ربما أكثر مما لو كنت لم تفعل كل العمل لجعله يونيكود متوافق من قبل. أنا شخصيا سوف أنسى عناصر التحكم في يونيكود TMS، والعودة إلى VCL. سوف يوفر المزيد من الألم في المستقبل. (لا شيء ضد تلك الضوابط، مانع لك.)

تذكر أيضا أن سلسلة D2009، ليست هي نفس الشيء مثل Widestring D2007 الذي تستخدمه بلا شك في تطبيقك. لذلك يجب أن تتغير جميع مثيلات Widsestring، والتي تغيرت بجد من السلسلة (التي كانت تموجية) مرة أخرى إلى سلسلة (التي هي الآن Unicodestring).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top