Как работать со строками на основе 0 обратно совместимым способом с Delphi XE5?

Я пытаюсь преобразовать мой текущий код Delphi 7 Win32 в Delphi XE5 Android с минимальными изменениями, чтобы мой проект можно было кросс-компилировать в Win32 из ряда версий Delphi и Android из XE5.

Начиная с XE5 происходят серьезные изменения в языке, направленные на будущее. Одним из таких изменений являются строки, начинающиеся с нуля.

В более старых версиях со строками на основе 1 следующий код был правильным:

function StripColor(aText: string): string;
begin
  for I := 1 to Length(aText) do

но сейчас это явно не правильно. Предлагаемое решение заключается в использовании:

for I := Low(aText) to High(aText) do

Таким образом, XE5 Win32 обрабатывает строки на основе 1, а Android XE5 обрабатывает строки на основе 0 правильно. Однако естьпроблема - предыдущие версии Delphi (например, XE2) выдают ошибку в таком коде:

E2198 Low cannot be applied to a long string
E2198 High cannot be applied to a long string

У меня довольно много кода для работы со строками. Мой вопрос - как изменить и сохранить приведенный выше код, чтобы его можно было компилировать в Delphi 7 Win32 и Delphi XE5 Android?

Постскриптум Я знаю, что все еще могу отключить определение ZEROBASEDSTRINGS в XE5, но это нежелательное решение, так как в XE6 это определение, вероятно, пропадет, и все строки будут вынуждены быть основаны на 0.

Ответы на вопрос(5)

Ваш ответ на вопрос