TEncodingクラスのGetByteCountメソッドを使えば、文字列のバイト数を簡単に取得できる。
文字列のバイト数は、その文字列のエンコーディング(文字コード)によって異なる。
まず、取得したいエンコーディングをサポートするTEncodingオブジェクトを取得する。
TEncoding.GetEncodingメソッドの引数にコードページまたは文字セットの名前を渡す。
Encoding := TEncoding.GetEncoding(932);
// Encoding := TEncoding.GetEncoding('Shift_JIS');
次に、バイト数を取得したい文字列を引数に指定してGetByteCountを呼び出す。
Len := Encoding.GetByteCount('こんにちわ');
次のサンプルプログラムでは、文字列のエンコーディングとバイト数を表示する。
var
Encoding: TEncoding;
Len: Integer;
begin
//Shift_JIS
Encoding := TEncoding.GetEncoding(932);
Len := Encoding.GetByteCount('こんにちわ');
Encoding.Free;
Writeln(Format('%s = %d', ['Shift_JIS', Len])); //出力:Shift_JIS = 10
//EUC-JP
Encoding := TEncoding.GetEncoding(20932);
Len := Encoding.GetByteCount('こんにちわ');
Encoding.Free;
Writeln(Format('%s = %d', ['EUC-JP', Len])); //出力:EUC-JP = 10
//JIS(ISO-2022JP)
Encoding := TEncoding.GetEncoding(50220);
Len := Encoding.GetByteCount('こんにちわ');
Encoding.Free;
Writeln(Format('%s = %d', ['JIS', Len])); //出力:JIS = 16
Bytelengthとの差はあるのでしょうか?