Шаг 1
Обычно вы должны придерживаться «обычных» типов, насколько это возможно: то есть String и Char
Таким образом, ваш код будет «автоматически» преобразован при обновлении.
ПРИМЕЧАНИЕ : есть несколько исключений для конкретного приложения.
Если вы этого не сделаете, вы, вероятно, столкнетесь с проблемой, с которой я столкнулся при обновлении библиотеки кода, которая в некоторых местах использовала AnsiString. Это не было проблемой в старом Delphi, когда AnsiString = String. Но, очевидно, это было проблематично, когда типы уже не были одинаковыми.
Шаг 2
Прочтите рекомендации по переходу на Unicode Delphi 2009. В нем упоминаются функции, которые обычно используются при работе со строками, поскольку предполагается, что каждый символ составляет 1 байт. Запишите их и закодируйте в соответствии с этими рекомендациями.
Шаги 3, 4 и 5
Избегайте использования условной компиляции. Ты только больше будешь себя мучить.
Шаги 6, 7, 8, 9 и 10
Не пытайтесь угадать компилятор, переопределив его внутренние типы. Вы подвергаете себя многим головным болям. Дело в том, что VCL, библиотеки времени выполнения и сторонние компоненты «понимают», что такое String . «Новое понимание» по-прежнему будет доступно при обновлении до Delphi 2009.
Если вы измените это определение, то вещи могут все еще работать в старой версии из-за неявной совместимости; однако, вероятно, что в Delphi 2009 ситуация внезапно изменится.
Помните! Тип используемой строки является важным фактором при вызовах Windows API. Windows обычно поддерживает как Ansi, так и Wide версии большинства функций. В старых Delphi версии Ansi используются по умолчанию; и из Delphi 2009 широкие версии используются по умолчанию.
Примечания
Что касается вашей озабоченности по поводу WideString в разработке COM:
Более старые версии Delphi обеспечивают автоматическое приведение типов между String и WideString - пусть ваш компилятор работает для вас, где это возможно. Очевидно, что ваши COM-интерфейсы должны быть объявлены с помощью WideString, но старайтесь избегать чего-либо еще.
EDIT
Взгляните на ссылку, предоставленную Хьюзом: Готовитесь к Delphi 2009 и выше при разработке с Delphi 7?
Также хочу подчеркнуть: каждая новая версия Delphi пытается поддерживать определенный уровень обратной совместимости (включая Delphi 2009). Если вы просто кодируете «как обычно», это вряд ли повлияет на вас в большой степени . На самом деле обратное в целом верно; чем больше вы получите фантазий , тем больше вероятность возникновения проблем.
Единственные серьезные проблемы, с которыми я когда-либо сталкивался при переходе на новые версии Delphi:
- Сторонний код / библиотеки без исходного кода.
- Не поддерживаемый сторонний код, где их разработчики прибегали к различным «хитростям» кодирования.
- Код Midas в Delphi 3 был особенно трудным обновлением. (Но опять же, разработчики, обходящие рекомендованные методы, были большим виновником.)