プロジェクトをさまざまな Delphi バージョンから Win32 に、XE5 から Android にクロスコンパイルできるように、現在の Delphi 7 Win32 コードを最小限の変更で Delphi XE5 Android に変換しようとしています。
XE5 以降、将来に向けて言語に重大な変更があります。そのような変更の 1 つは、0 から始まる文字列です。
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 でコンパイル可能になるように上記のコードを変更して保持する方法は?
PS XE5 で ZEROBASEDSTRINGS の定義を無効にできることはわかっていますが、XE6 ではこの定義がおそらくなくなり、すべての文字列が強制的に 0 ベースになるため、これは望ましくない解決策です。