一般に使用される AnsiString のルーチン
文字列の操作 への移動
SysUtils
にある文字列処理ルーチンの処理対象は UnicodeString 型と AnsiString 型です。対象の機能範囲内では、一部のルーチンが同じ目的で使用されます。計算中に特定の基準を使用するかどうかが異なります。
AnsiStrings ユニットの関数には、SysUtils ユニットのルーチンと同じ機能があります。AnsiStrings
関数には、SysUtils
関数より優れたパフォーマンスの機能があります。これは SysUtils
関数が AnsiString
を UnicodeString
に変換するからです。AnsiStrings
関数は AnsiString
型のみで動作するので、変換はありません。
次の機能分野別にルーチンの一覧を以下の表に示します。
ルーチンが次の基準を満足するかどうかを示す列も該当する場合に表に示されます。
- 大文字/小文字の区別: ロケール設定が使用される場合に、大文字と小文字の区別の定義を決定します。ルーチンでロケール設定が使用されない場合は、文字の順序値に基づいて解析されます。ルーチンで大文字と小文字が区別されない場合は、大文字や小文字の各文字が論理的にマージされます(定義済みパターンで判別)。
- ロケール設定の使用: ロケール設定では、ユーザーがユーザーのアプリケーションで特定のロケール(特にアジア諸国の環境)でカスタマイズできます。多くのロケール設定では、小文字の各文字コードは対応する大文字の各文字よりは小さいとみなされます。これは ASCII の順序(小文字のコードが大文字のコードより大)と反対です。システム ロケールを使用するルーチンでは、先頭に Ansi が付きます(つまり AnsiXXX という形式)。
- マルチバイト文字セット(MBCS)のサポート: MBCS はアジア諸国のロケールでコードを書き込むときに使用されます。マルチバイト文字は 1 つまたは複数の文字コードで表現されます。したがってバイト単位の長さは文字列の長さと必ずしも一致しません。MBCS をサポートするルーチンでは 1 バイト文字とマルチバイト文字を解析します。
ByteType と StrByteType は特定のバイトがマルチバイト文字の第 1 バイトであるかどうかを判別します。マルチバイト文字を使用するときは、文字の途中で切り離して、文字列が切り捨てられないように注意してください。関数や手続きにパラメータとして文字を渡さないでください。これは文字のサイズが事前に定義できないからです。代わりに、文字または文字列のポインタを渡します。MBCS の詳細は、「コードを多国語対応にする」を参照してください。
文字列の長さルーチン
ルーチン | ロケール設定の使用 | MBCS のサポート | 戻り値 |
---|---|---|---|
○ |
○ |
文字列の要素数。MBCS や Unicode のサロゲート ペアの「文字」数という意味ではありません。 | |
○ |
○ |
型や変数を表現するために必要なバイト数。 |
短い文字列を除き、すべての文字列で Length
と SizeOf
の結果が異なることに注意してください。SizeOf
はポインタのバイト数に一致します。短い文字列以外はポインタだからです。
文字列の比較ルーチン
大文字/小文字変換ルーチン
ルーチン | ロケール設定の使用 | MBCS のサポート |
---|---|---|
System.AnsiStrings.AnsiLowerCase System.SysUtils.AnsiLowerCase |
○ |
○ |
System.AnsiStrings.AnsiUpperCaseFileName System.SysUtils.AnsiUpperCaseFileName |
○ |
○ |
System.AnsiStrings.AnsiUpperCase System.SysUtils.AnsiUpperCase |
○ |
○ |
× |
×。A から Z に対してのみ動作し、ヨーロッパ言語のアクセント付き文字では使用不可。 | |
× |
×。a から z に対してのみ動作し、ヨーロッパ言語のアクセント付き文字では使用不可。 |
- メモ: 文字列ファイル名で使用されるルーチン
AnsiCompareFileName
、AnsiLowerCaseFileName
、AnsiUpperCaseFileName
はすべてシステム ロケールを使用します。移植可能なファイル名を常に使用する必要があります。これはファイル名に使用するロケール(文字セット)はデフォルトのユーザー インターフェイスと異なるものを使用できるからです。
文字列の部分的変更ルーチン
ルーチン | 大文字/小文字の区別 | MBCS のサポート |
---|---|---|
該当なし |
○ | |
System.AnsiStrings.AnsiQuotedStr System.SysUtils.AnsiQuotedStr |
該当なし |
○ |
System.AnsiStrings.AnsiReplaceStr System.StrUtils.AnsiReplaceStr |
○ |
○ |
System.AnsiStrings.AnsiReplaceText System.StrUtils.AnsiReplaceText |
× |
○ |
System.AnsiStrings.StringReplace System.SysUtils.StringReplace |
フラグによるオプション |
○ |
System.AnsiStrings.ReverseString System.StrUtils.ReverseString |
該当なし |
× |
該当なし |
× | |
該当なし |
× | |
○ |
○ | |
該当なし |
○ | |
該当なし |
○ | |
該当なし |
○ | |
該当なし |
○ |
部分文字列ルーチン
ルーチン | 大文字/小文字の区別 | MBCS のサポート |
---|---|---|
該当なし |
○ | |
○ |
○ | |
○ |
○ | |
System.AnsiStrings.IsPathDelimiter System.SysUtils.IsPathDelimiter |
○ |
○ |
System.AnsiStrings.LastDelimiter System.SysUtils.LastDelimiter |
○ |
○ |
該当なし |
× | |
該当なし |
× | |
該当なし |
× | |
× |
× | |
該当なし |
○ |
文字列情報ルーチン
ルーチン | 戻り値 |
---|---|
コード ページ | |
要素サイズ | |
参照カウント |
- メモ: 文字列の内部構造を直接操作することは安全ではありません。製品のバージョンにより構造が異なるからです。