( http://www.acrosoft.pe.kr에서 팁 가져옴 ^^)
String 변수의 n번째 문자열이 영어인지 DBCS문자의 첫번째 바이트인지 두번재 바이트인지를 반환해주는 ByteType이라는 함수입니다. SysUtils에 정의되어 있고 함수의 원형은 아래와 같습니다.
function ByteType(const S: string; Index: Integer): TMbcsByteType;
여기서 TMbcsByteType은 mbSingleByte, mbLeadByte, mbTrailByte 중에 하나의 값을 가지게 됩니다.
String이 아니고 PChar형인 경우에는
function StrByteType(Str: PChar; Index: Cardinal): TMbcsByteType;
을 쓰시면 되구요.
--------------------------------------------------------------------------------------
내가 만들어본 예제^^
var
str: string;
tm : TMbcsByteType;
i : integer;
begin
str := 'ABC하이121';
for i:=1 to length(str) do
begin
tm := ByteType(str,i);
case tm of
mbSingleByte: Canvas.TextOut(0,i*15,format('String[%d] : 1바이트 문자', [i]));
mbLeadByte : Canvas.TextOut(0,i*15,format('String[%d] : 2바이트 문자의 1번째 바이트', [i]));
mbTrailByte : Canvas.TextOut(0,i*15,format('String[%d] : 2바이트 문자의 2번째 바이트', [i]));
end;
end;
end;
|