System.AnsiStrings.CharLength
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 は、文字列内のマルチバイト文字の開始位置を検索するのに、使用することができます。