--------------------------------------------
글쎄요 저같으면 대충 아래와 같이 해보겠습니다.
var i, j, k : Integer;
begin
i := Length(str);
j := 1;
k := 0;
while i >= j do
begin
if ByteType(str, j) = mbLeadByte then
begin
k := k + 1;
j := j + 2;
end
else
begin
k := k + 1;
j := j + 1;
end;
end;
될지 안될지는 장담은 못하는데 위의 ByteType를 이용하면 쉽게 가능함
wSt : WideString;
begin
wSt := Edit1.Text; // 대한민국1234
Caption := IntToStr(Length(wSt)); // 8
end;