Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 팁&트릭
Delphi Programming Tip&Tricks
[37] String의 n번째 문자열이 영어? DBCS문자의 첫번째 바이트? 두번째?
장인수 [textout] 5631 읽음    2002-10-12 16:11
(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; 

+ -

관련 글 리스트
37 String의 n번째 문자열이 영어? DBCS문자의 첫번째 바이트? 두번째? 장인수 5631 2002/10/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.