Jak pracować z ciągami opartymi na 0 w sposób zgodny wstecz od Delphi XE5?

Próbuję przekonwertować mój obecny kod Win32 Delphi 7 na Delphi XE5 Android z minimalnymi zmianami, aby mój projekt mógł zostać skompilowany do Win32 z szeregu wersji Delphi i Androida z XE5.

Począwszy od XE5 pojawiają się przełomowe zmiany języka w przyszłości. Jedną z takich zmian są łańcuchy oparte na zerach.

W starszych wersjach z ciągami opartymi na 1 następujący kod był poprawny:

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

ale teraz to oczywiście nie jest w porządku. Sugerowanym rozwiązaniem jest użycie:

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

W ten sposób XE5 Win32 obsługuje ciągi oparte na 1, a XE5 Android obsługuje ciągi oparte na 0. Jednak istnieje problem - poprzednie wersje Delphi (np. XE2) wyświetlają błąd w takim kodzie:

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

Mam sporo kodu do manipulacji ciągami. Moje pytanie brzmi - jak zmodyfikować i zachować powyższy kod do kompilacji w Delphi 7 Win32 i Delphi XE5 Android?

P.S. Wiem, że wciąż mogę wyłączyć definiowanie ZEROBASEDSTRINGS w XE5, ale jest to niepożądane rozwiązanie, ponieważ w XE6 ta definicja prawdopodobnie zniknie, a wszystkie ciągi będą musiały być oparte na 0.

questionAnswers(5)

yourAnswerToTheQuestion