一般に使用される AnsiString のルーチン

提供: Appmethod Topics
移動先: 案内検索

文字列の操作 への移動


SysUtils にある文字列処理ルーチンの処理対象は UnicodeString 型と AnsiString 型です。対象の機能範囲内では、一部のルーチンが同じ目的で使用されます。計算中に特定の基準を使用するかどうかが異なります。

AnsiStrings ユニットの関数には、SysUtils ユニットのルーチンと同じ機能があります。AnsiStrings 関数には、SysUtils 関数より優れたパフォーマンスの機能があります。これは SysUtils 関数が AnsiStringUnicodeString に変換するからです。AnsiStrings 関数は AnsiString 型のみで動作するので、変換はありません。

次の機能分野別にルーチンの一覧を以下の表に示します。

ルーチンが次の基準を満足するかどうかを示す列も該当する場合に表に示されます。

  • 大文字/小文字の区別: ロケール設定が使用される場合に、大文字と小文字の区別の定義を決定します。ルーチンでロケール設定が使用されない場合は、文字の順序値に基づいて解析されます。ルーチンで大文字と小文字が区別されない場合は、大文字や小文字の各文字が論理的にマージされます(定義済みパターンで判別)。
  • ロケール設定の使用: ロケール設定では、ユーザーがユーザーのアプリケーションで特定のロケール(特にアジア諸国の環境)でカスタマイズできます。多くのロケール設定では、小文字の各文字コードは対応する大文字の各文字よりは小さいとみなされます。これは ASCII の順序(小文字のコードが大文字のコードより大)と反対です。システム ロケールを使用するルーチンでは、先頭に Ansi が付きます(つまり AnsiXXX という形式)。
  • マルチバイト文字セット(MBCS)のサポート: MBCS はアジア諸国のロケールでコードを書き込むときに使用されます。マルチバイト文字は 1 つまたは複数の文字コードで表現されます。したがってバイト単位の長さは文字列の長さと必ずしも一致しません。MBCS をサポートするルーチンでは 1 バイト文字とマルチバイト文字を解析します。

ByteTypeStrByteType は特定のバイトがマルチバイト文字の第 1 バイトであるかどうかを判別します。マルチバイト文字を使用するときは、文字の途中で切り離して、文字列が切り捨てられないように注意してください。関数や手続きにパラメータとして文字を渡さないでください。これは文字のサイズが事前に定義できないからです。代わりに、文字または文字列のポインタを渡します。MBCS の詳細は、「コードを多国語対応にする」を参照してください。

文字列の長さルーチン

ルーチン ロケール設定の使用 MBCS のサポート 戻り値

System.Length

文字列の要素数。MBCS や Unicode のサロゲート ペアの「文字」数という意味ではありません。

System.SizeOf

型や変数を表現するために必要なバイト数。

短い文字列を除き、すべての文字列で LengthSizeOf の結果が異なることに注意してください。SizeOf はポインタのバイト数に一致します。短い文字列以外はポインタだからです。

文字列の比較ルーチン

ルーチン 大文字/小文字の区別 ロケール設定の使用 MBCS のサポート

System.AnsiStrings.AnsiCompareStr System.SysUtils.AnsiCompareStr

System.AnsiStrings.AnsiCompareText System.SysUtils.AnsiCompareText

×

System.AnsiStrings.AnsiCompareFileName System.SysUtils.AnsiCompareFileName

×

System.AnsiStrings.AnsiMatchStr System.StrUtils.AnsiMatchStr

System.AnsiStrings.AnsiMatchText System.StrUtils.AnsiMatchText

×

System.AnsiStrings.AnsiContainsStr System.StrUtils.AnsiContainsStr

System.AnsiStrings.AnsiContainsText System.StrUtils.AnsiContainsText

×

System.AnsiStrings.AnsiStartsStr System.StrUtils.AnsiStartsStr

System.AnsiStrings.AnsiStartsText System.StrUtils.AnsiStartsText

×

System.AnsiStrings.AnsiEndsStr System.StrUtils.AnsiEndsStr

System.AnsiStrings.AnsiEndsText System.StrUtils.AnsiEndsText

×

System.AnsiStrings.AnsiEndsStr System.StrUtils.AnsiEndsStr

System.AnsiStrings.AnsiIndexText System.StrUtils.AnsiIndexText

×

System.AnsiStrings.CompareStr System.SysUtils.CompareStr

×

×

System.AnsiStrings.CompareText System.SysUtils.CompareText

×

×

×

System.StrUtils.AnsiResemblesText

×

×

×

大文字/小文字変換ルーチン

ルーチン ロケール設定の使用 MBCS のサポート

System.AnsiStrings.AnsiLowerCase System.SysUtils.AnsiLowerCase

System.AnsiStrings.AnsiUpperCaseFileName System.SysUtils.AnsiUpperCaseFileName

System.AnsiStrings.AnsiUpperCase System.SysUtils.AnsiUpperCase

System.AnsiStrings.LowerCase System.SysUtils.LowerCase

×

×。A から Z に対してのみ動作し、ヨーロッパ言語のアクセント付き文字では使用不可。

System.AnsiStrings.UpperCase System.SysUtils.UpperCase

×

×。a から z に対してのみ動作し、ヨーロッパ言語のアクセント付き文字では使用不可。

メモ: 文字列ファイル名で使用されるルーチン AnsiCompareFileNameAnsiLowerCaseFileNameAnsiUpperCaseFileName はすべてシステム ロケールを使用します。移植可能なファイル名を常に使用する必要があります。これはファイル名に使用するロケール(文字セット)はデフォルトのユーザー インターフェイスと異なるものを使用できるからです。

文字列の部分的変更ルーチン

ルーチン 大文字/小文字の区別 MBCS のサポート

System.SysUtils.AdjustLineBreaks

該当なし

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

該当なし

×

System.AnsiStrings.StuffString System.StrUtils.StuffString

該当なし

×

System.FillChar

該当なし

×

System.SysUtils.StrPCopy

System.AnsiStrings.Trim System.SysUtils.Trim

該当なし

System.AnsiStrings.TrimLeft System.SysUtils.TrimLeft

該当なし

System.AnsiStrings.TrimRight System.SysUtils.TrimRight

該当なし

System.SysUtils.WrapText

該当なし

部分文字列ルーチン

ルーチン 大文字/小文字の区別 MBCS のサポート

System.SysUtils.AnsiExtractQuotedStr

該当なし

System.AnsiStrings.AnsiPos System.SysUtils.AnsiPos

System.AnsiStrings.IsDelimiter System.SysUtils.IsDelimiter

System.AnsiStrings.IsPathDelimiter System.SysUtils.IsPathDelimiter

System.AnsiStrings.LastDelimiter System.SysUtils.LastDelimiter

System.StrUtils.LeftStr

該当なし

×

System.StrUtils.RightStr

該当なし

×

System.StrUtils.MidStr

該当なし

×

System.AnsiStrings.QuotedStr System.SysUtils.QuotedStr

×

×

System.StringOfChar

該当なし

文字列情報ルーチン

ルーチン 戻り値

System.StringCodePage

コード ページ

System.StringElementSize

要素サイズ

System.StringRefCount

参照カウント

メモ: 文字列の内部構造を直接操作することは安全ではありません。製品のバージョンにより構造が異なるからです。

関連項目