Я пытаюсь преобразовать свой текущий код 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-строчные строки, а XE5 Android обрабатывает строки, основанные на 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?
P.S. Я знаю, что я все еще могу отключить определение ZEROBASEDSTRINGS в XE5, но это нежелательное решение, поскольку в XE6 это определение, вероятно, исчезнет, и все строки будут вынуждены быть основаны на 0.