|
기본적으로 빌더 2009는 유니코드 문자열 모드입니다.
그래서 String 을 쓰면 UnicodeString을 쓰는 것과 같습니다.
플젝 옵션의 TCHAR는 말 그대로 TCHAR에 대해서만 지정한 처리를 할 뿐입니다.
: strcpy(&buff[0],sMain.t_str());
이 명령을 쓰게 되면 sMain 내의 문자열은 유니코드에서 앤시코드로 바뀌어 버립니다.
그래서 그 뒤로는 원하는 결과가 나오지 않는 것입니다.
앤시코드인데 유니코드로 처리할려니 이상하게 나오는 것이죠.
그래서 확실하게 하려면
String 대신 AnsiString 을 명확하게 지정해 사용하면 됩니다.
최낙구 님이 쓰신 글 :
: C++ Builder 2009에서
: strcpy후에 글자 SubString하면 깨짐현상이 있읍니다.
: (그림참조)
:
: 소스
:
: String sMain="12345";
: char buff[255];
: Memo2->Lines->Add(sMain);
: Memo2->Lines->Add(sMain.SubString(1,2));
: strcpy(&buff[0],sMain.t_str());
: Memo2->Lines->Add(sMain);
: Memo2->Lines->Add(sMain.SubString(1,2));
:
: 결과
:
: 12345
: 12
: 12345
: 㐳㐳
|