System.SysUtils.TStringHelper

提供: RAD Studio API Documentation
移動先: 案内検索

Delphi

TStringHelper = record helper for string

C++

typedef void *TStringHelper;

プロパティ

種類 可視性 ソース ユニット
helper
typedef
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 モバイル コンパイラ

  • DCCIOSARM
  • DCCIOS32

0 から始まる

(文字列の先頭文字の開始インデックスが 0)

Delphi デスクトップ コンパイラ

  • DCC32
  • DCC64
  • DCCOSX

1 から始まる

(文字列の先頭文字の開始インデックスが 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)); // 0 始まりと 1 始まりの両方の文字列で動作する
   Writeln(Pos('a', myString)); // 1 始まりの文字列で動作する
 end.

出力は以下のとおりです。

 8
 9
メモ: あらゆるプラットフォームで文字列を操作する場合、TSringHelper メソッドに移行することをお勧めします。 既存のコードとの下位互換性をできるだけ保つため、文字列のインデックスを扱っている System ユニット内の従来の関数は、1 から始まるインデックス方式の文字列でも引き続き機能するほか、必要な自動変換を実行して、0 から始まるインデックス方式の文字列に対しても正しい操作を行います。 その一例が、System.Pos です。 ただし、System ユニットのこれら従来の文字列処理関数は非推奨であり、今後サポートされなくなる可能性があります。

関連項目