هل من الممكن تعديل Tstringfield للعمل مثل Twidestringfield في Delphi؟

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

سؤال

نريد استخدام Unicode مع Delphi 2009 و interbase ، ووجدنا أنه لتحويل الحرف الترميز من Win1252 إلى Unicode_FSS أو UTF8 ، يتعين علينا أولاً استبدال جميع مثيلات Tstringfield مع Twidestringfield في جميع datamodules. لحوالي 60 Datamodules ، لا يمكننا ببساطة القيام بذلك خلال عطلة نهاية أسبوع واحدة. أستطيع أن أرى خيارين فقط لاستراتيجية الترحيل:

  • ابحث عن حل بديل يسمح باستخدام حقول Tstringfield الحالية دون تشغيل خطأ "المتوقع: Twidestringfield"

أو

  • إزالة جميع الحقول المستمرة لتجنب تعارض نوع السلسلة

بقدر ما أعرف أن أنواع الحقول لحقول قاعدة البيانات المستمرة يتم تسجيلها في نوع من سجل الفئة. هل يمكن أن نستخدم هذا لجعل Delphi يعتقد أن tstringfield على ما يرام لعمود حرف interbase مع Unicode_FSS أو UTF8 ترميز؟

أو هل يمكننا استخدام برنامج تشغيل DBExpress التجاري الذي يعمل مع Tstringfield في كلتا الحالتين؟

انظر أيضًا سؤالي ذي الصلة: Delphi Dbexpress و interbase: خطوات الترحيل UTF8؟


تحديث: بعد استبدال جميع حدث Tstringfield مع Twidestringfield في جميع ملفات DFM و PAS ، وجدنا أنه من الضروري الآن أيضًا مضاعفة قيمة خاصية "الحجم" لحقول TwidestringFields بأربعة (إذا استخدمنا UTF8) في حوالي 100 مكان. لذلك أبدأ مكافأة للحصول على وسيلة لتقليل العمل اليدوي لإصلاح DFMS

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

المحلول

سيؤدي استخدام Tstringfield لأحرف Unicode إلى مشكلة ، وسيحتوي على 00 دولار ، مما ينهي السلسلة بشكل أساسي ، على سبيل المثال ، سائقي DBExpress ، حيث تقبل هذه السلاسل P (ANSI). استخدام Twidestringfield يستخدم Pwidechar في dbexpress ، لذلك يتوقع السائق نقاط الترميز Unicode الحقيقية.

لا توجد طريقة سهلة للخروج ، أخشى.

نصائح أخرى

Sergey A Kryukov ، "Unicode Controls: ماذا يمكن أن تفعل VCL؟" ، مجلة Delphi ، 116 (أبريل 2005) ، ص. 33-43 (مصدر الرمز) مجلة دلفي

Unfortunately, the text of the original article is not freely available, but ask me if you have questions.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top