System.AnsiStrings.CharLength

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

Delphi

function CharLength(const S: AnsiString; Index: Integer): Integer;

C++

extern DELPHI_PACKAGE int __fastcall CharLength(const System::AnsiString S, int Index)/* overload */;

プロパティ

種類 可視性 ソース ユニット
function public
System.AnsiStrings.pas
System.AnsiStrings.hpp
System.AnsiStrings System.AnsiStrings


説明

文字に必要なバイト数を取得します。

CharLength は、S 内の位置 Index から始まる文字に必要なバイト数を返します。 Index が文字の開始位置でない場合、この関数は、文字全体の長さではなく、文字の残りの部分のサイズを返します。

メモ:Index は、S 内の要素インデックスであり、バイト インデックスでも文字インデックスでもありません。

システムでマルチバイト文字セット(MBCS)を使用していない場合、CharLength は常に 1 を返します。

以下の例で、CharLength の操作を示します。

 
type
SJISString = type AnsiString(932);

var
A: SJISString;
L: Integer;

begin
A := 'A' + 'B' + #$82#$A0 + // 日本語のひらがな 'あ'
#$82#$A2 + // 日本語のひらがな 'い'
#$82#$A4 + // 日本語のひらがな 'う'
'C' + 'D';

L := CharLength(A, 1);  // 1 を返す(その位置の文字は 'A')
L := CharLength(A, 2);  // 1 を返す(その位置の文字は 'B')
L := CharLength(A, 3);  // 2 を返す
L := CharLength(A, 4);  // 1 を返す

end.

この例では、インデックスが 1 または 2 のとき、シングルバイト文字の開始位置を指すので、関数は 1 を返します。インデックスが 3 のとき、2 バイト文字の開始位置を指すので、関数は 2 を返します。インデックスが 4 の場合、2 バイト文字の後半部分を指すので、関数は 1 を返します。この例の場合は要素のサイズが 1 であることに注意してください。2 つの要素が必要な文字もあれば、1 つの要素しか必要ない文字もあります。

一般に、CharLength は、文字列内のマルチバイト文字の開始位置を検索するのに、使用することができます。

関連項目