System.SysUtils.TStringHelper
Delphi
TStringHelper = record helper for string
C++
struct TStringHelper /* Helper for uni string 'System::UnicodeString' */;
プロパティ
種類 | 可視性 | ソース | ユニット | 親 |
---|---|---|---|---|
helper class |
public | System.SysUtils.pas System.SysUtils.hpp |
System.SysUtils | System.SysUtils |
説明
インデックスが 1 から始まる文字列もインデックスが 0 から始まる文字列も含むすべての文字列扱うための関数やプロパティを提供するレコード ヘルパです。
TStringHelper は組み込み文字列型のレコード ヘルパで、文字列型からアクセス可能なヘルパ メソッドをクラスやレコードのメソッドであるかのように提供します。
Delphi モバイル コンパイラ(DCCIOS32 および DCCIOSARM)には、0 から始まる文字列インデックスが導入されています。 Delphi デスクトップ コンパイラでは、インデックスが 1 から始まる文字列を引き続きサポートしていますが、インターフェイスと動的配列については、どの Delphi コンパイラの場合にも、インデックスが 0 から始まります。 この変更については、「デスクトップからモバイルへの Delphi コードの移行」でより詳しく説明します。
文字列型のインデックス方式は、以下の表に示すように、使用しているコンパイラによって異なります。
Delphi コンパイラでの文字列のインデックス方式 | |
---|---|
Delphi コンパイラ | 文字列のインデックス方式 |
Delphi モバイル コンパイラ
|
0 から始まる方式 |
Delphi デスクトップ コンパイラ
|
1 から始まる方式 |
常に TStringHelper メソッドを使用して文字列を処理すると、条件(IFDEF 指令など)を使用せずに複数のコンパイラやプラットフォームに対応できるコードを記述することができます。
例:
コードで System.Pos 関数を S という文字列と共に使用している場合、そのコードは、TStringHelper.IndexOf メソッドを使用するよう編集することができます。S.IndexOf() を呼び出して、同じ関数を実行することができます:
var
MyString: String;
begin
MyString := 'This is a string.';
Writeln(myString.IndexOf('a', 0, 0)); //Working with zero-based or 1-based strings
Writeln(Pos('a', myString)); //Working with 1-based strings
end.
出力は以下のとおりです。
8 9
- メモ: あらゆるプラットフォームで文字列を操作する場合は、TSringHelper のメソッドに移行することをお勧めします。 既存のコードとの下位互換性をできるだけ保つため、文字列のインデックスを扱っている System ユニット内の従来の関数は、1 から始まるインデックス方式の文字列でも引き続き機能するほか、必要な自動変換を実行して、0 から始まるインデックス方式の文字列に対しても正しい操作を行います。 1 つの例は System.Pos です。ただし、System ユニットのこれら従来の文字列処理関数は非推奨であり、今後サポートされなくなる可能性があります。