{*******************************************************************************
機能: 文字列の長さを取得
引数:
str : 対象文字列
ASMode : KI/KOを考慮するかどうかのフラグ。考慮する場合はTRUE。
戻値:
文字列長
*******************************************************************************}
function GetLength(str: String; ASMode: Boolean): Integer;
var
i: Integer;
InDBCS: Boolean;
begin
// AS/400 (KI/KO考慮)
if (ASMode) then
begin
InDBCS := False;
Result := Length(str);
for i := 1 to Length(str) do
begin
case ByteType(str, i) of
mbSingleByte:
InDBCS := False;
mbLeadByte:
//半角から全角に切り替わった時点でKI/KO分加算
if (InDBCS = False) then
begin
InDBCS := True;
Result := Result + 2;
end;
mbTrailByte:
;
end;
end;
end
// 通常
else
begin
Result := Length(str);
end;
end;
|