Como trabalhar com strings baseadas em 0 de maneira compatível com versões posteriores desde o Delphi XE5?

Eu estou tentando converter meu código Delphi 7 Win32 atual para Delphi XE5 Android com alterações mínimas, para que meu projeto pode ser cross-compilado para Win32 de uma variedade de versões do Delphi e Android da XE5.

A partir da XE5, há mudanças significativas na linguagem voltada para o futuro. Uma dessas alterações é seqüências de caracteres com base zero.

Em versões mais antigas com strings baseadas em 1, o código a seguir estava correto:

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

mas agora isso obviamente não está certo. A solução sugerida é usar:

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

Desta forma, XE5 Win32 lida com strings baseadas em 1 e XE5 Android lida com strings baseadas em 0 corretamente. No entanto, há um problema - as versões anteriores do Delphi (por exemplo, XE2) geram um erro em tal código:

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

Eu tenho bastante código de manipulação de string. Minha pergunta é - como modificar e manter o código acima para ser compilável em Delphi 7 Win32 e Delphi XE5 Android?

P.S. Eu sei que ainda posso desabilitar ZEROBASEDSTRINGS definir no XE5, mas isso é uma solução indesejada, pois no XE6 esta definição provavelmente terá desaparecido e todas as strings serão forçadas a ser baseadas em 0.

questionAnswers(5)

yourAnswerToTheQuestion