Мы хотим использовать Unicode с Delphi 2009 и Interbase и обнаружили, что для переключения кодировки символов с WIN1252 на UNICODE_FSS или UTF8 мы сначала должны заменить все экземпляры TStringField на TWideStringField во всех модулях данных. Приблизительно для 60 модулей данных мы не можем просто сделать это за один уик-энд. Я вижу только два варианта стратегии перехода:
- найти обходной путь, который позволяет использовать существующие поля TStringField, не вызывая ошибку «Ожидаемое: TWideStringField»
или
- удалить все постоянные поля, чтобы избежать конфликта типов строк
Насколько я знаю, типы полей для постоянных полей базы данных регистрируются в каком-то реестре классов. Можем ли мы использовать это, чтобы заставить Delphi поверить, что TStringField подходит для символьного столбца Interbase с кодировкой UNICODE_FSS или UTF8?
Или мы можем использовать коммерческий драйвер dbExpress, который работает с TStringField в обоих случаях?
См. Также мой связанный вопрос: Delphi dbExpress и Interbase: шаги и риски миграции в UTF8?
Обновление: после замены всех вхождений TStringField на TWideStringField во всех файлах DFM и PAS мы обнаружили, что теперь также необходимо умножить значение свойства 'Size' в TWideStringFields на четыре (если мы используем UTF8) в каких-то 100 местах. Поэтому я начинаю вознаграждение за способ уменьшить ручную работу по исправлению DFM