Директивы компилятора
В общем, я бы посоветовал вам очень опасаться директив компилятора.Они служат своей цели, но для общего использования их, вероятно, следует вообще избегать.
Первая проблема заключается в том, что вам необходимо скомпилировать приложение и дважды протестировать его, поскольку оно принципиально и / или слегка отличается длядиректива вкл / выкл.
Эта ситуация ухудшается для каждой дополнительной директивы, потому что вам обычно приходится переставлять комбинации:
D1 вкл., D2 вкл.
D1 вкл., D2 выкл.
D1 выкл., D2 вкл.
D1 выкл., D2 выкл.
3 директивы - это 8 перестановок ... и т. Д.
Unicode-строки
Пожалуйста, смотрите: Готовитесь к Delphi 2009 и более поздним версиям при разработке с Delphi 7?
У него есть несколько хороших ответов для вас.
Вопрос 1
Как уже было сказано, я советую против этого,Я также советую против по другим причинам в моем ответе на вышеупомянутый вопрос.
Более конкретно:
- В Delphi <2009 обе строки отличаются. </li>
- В Delphi> = 2009 обе строки фактически одинаковы.
Вопрос 2
Мало того, что это плохо рекомендовано по тем же причинам, что и вопрос 1, но на самом деле есть некоторые тонкие проблемы.
Более точный тип Text
(String) определяется вашей версией Delphi.Итак:
- В Delphi <2009, остальная часть вашего условного выражения преобразует в Word один символ.(Вероятно, без вредного воздействия.) </li>
- В Delph> = 2009, часть if вашего условия приводит двухбайтовый символ к байту.(С потерей информации.)
Также есть некоторые особые соображения и новые классы поддержки для «специальных» символов.Вы захотите посмотреть на них.См. Как определить клавиши Unicode при нажатии клавиши?
Вопрос 3
Я почти уверен, что # 13 будет рассматриваться как один символ, поэтому в Delphi> = 2009, где Char == WideChar, этот символ займет 2 байта.
Однако снова ищите Linebreak
константы в Delphi.System.sLinebreak
, вероятно, был представлен еще во времена Киликса.