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

C++빌더 팁&트릭
C++Builder Programming Tip&Tricks
[594] spirntf 대신 wsprintf 사용과 유니코드를 고려한 코딩
김태선 [jsdkts] 23068 읽음    2006-04-17 13:32
많이 아실텐데... 그래도 그냥 써 볼랍니다.

sprintf 를 사용하려면
#include <stdio.h> 가 필요합니다.
이는 보통
#include <vcl.h>
#include <stdio.h>
#pragma hdrstop
식으로 쓰이게 되죠.

그런데 왜 vcl에서는 sprintf 를 포함하지 않았는지 궁금했었는데...
wsprintf 가 있기 때문이었습니다.

wsprintf 는
#include <stdio.h>
없이 사용가능한 WIN32 API 로,
일반 앤시코드과 유니코드 사용 프로그램에 공히 사용할수 있는 문자열 합성 함수입니다.

유니코드를 사용하지 않는 프로그램이면
그냥 wsprintf 를 sprintf 대신 사용하면 됩니다.
유니코드를 사용하는 프로그램이면
역시 wsprintf 를 그냥 사용하면 됩니다.
유니코드를 사용할 경우는 문자열은 L"문자열"; 식으로 유니코드로 표현되어야 하며
char * 대신 wchat_t *  형이 사용되어야 합니다.

그래서 표준적으로 유니코드 사용프로그램과 일반 프로그램에 공히 하나의 코드로 처리하기 위해
컴파일러는 TCHAR 형과 TEXT 매크로를 제공합니다.
가령 OnCreate 이벤트에 다음과 같은 코딩이 가능합니다.
{
  TCHAR  buf[100];
  wsprintf(buf, TEXT("캡션 메시지: %s"), TEXT("안녕하세요. C++빌더입니다."));
  Caption = buf;
}
이 코드는 앤시코드형이나 유니코드형 프로그램 양쪽에서 안전하게 동작합니다.
TEXT 매크로 와 __TEXT 매크로는 동일합니다.

Project Option->Directorys...->Conditional defines ; 에
UNICODE 또는 _UNICODE 를 넣어주면
유니코드모드로 컴파일하게 되는데,
이 경우 안전하게 유니코드모드로
컴파일되게 합니다.

프로그래밍할때 아예 습관을 char 대신 TCHAR 으로 하고
"문자열" 대신 TEXT("문자열") 을 쓰는 것도 좋을 것입니다.

전혀 유니코드를 사용할 필요가 없는 경우는 맘대로 해도 되지만.

그럼..
조계성 [davidcho]   2006-04-18 01:13 X
태선님.. 안녕하세요? BCB 때문에 고민이 많은 사람입니다.
초면에 죄송하지만 혹시 도움 좀 요청해도 될까요?

가능하시면 메일 좀 부탁 드릴께요..    davidcho001@empal.com
그럼 좋은 소식 기다리겠습니다.
김태선 [jsdkts]   2006-04-18 10:15 X
죄송하지만 개인적으로 도움을 드리기는 어렵습니다.
자유게시판 같은 곳에 도움을 청해 보시지요.

^^;
조계성 [davidcho]   2006-04-18 10:40 X
답변해주셔서 감사합니다.
"개인적으로" 라는 의미는 공적으로는 가능하다는 말인가요?
개인적으로가 아니라 일을 부탁 드릴수 있을까 해서요. ^^
괜찮으시다면 전화로 말씀 드리고 싶은데 jsdkts@hotmail.com 로 메일을 보내겠습니다.
조계성 [davidcho]   2006-04-18 12:10 X
음.. 메일이 이 주소로는 전달이 안되네요..
3/29 에 구인 구직 란에 "C++ builder FREE 개발자 구합니다"  올렸던 회사 소속입니다.
꼭 연락을 하고 싶은데.. 부탁드립니다.
김태선 [jsdkts]   2006-04-18 13:23 X
회사일로 바쁩니다.

죄송합니다.
조계성 [davidcho]   2006-04-18 18:08 X
음... 역시 고수님들은 항상 열심히 사시는 군요...
혹시나 궁금하실 경우  www.digidite.co.kr 방문해주세요.
아직은 open 준비 중인데. 담주 말쯤에는 완성된 홈페이지로 뵐수 있을꺼 같습니다.
정말로 IT의 새로운(?) 가능성을 경험하실수 있을 껍니다.

암튼. 여러가지로 감사합니다.
앞으로 더 활발한 활동 기대하겠습니다.
그럼. 항상 좋은 일만 있으시길...

+ -

관련 글 리스트
594 spirntf 대신 wsprintf 사용과 유니코드를 고려한 코딩 김태선 23068 2006/04/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.