음...
문제점
UnicodeString 에서 t_str() 함수는
return값이 char* 이기는 합니다만..
문자열을 AnsiString으로 변환한후에 char*를 return하는것이 아닙니다.
그냥 wchar_t * 를 char *로 return하는것 뿐입니다.
숫자등 codepage가 잘 맞는 경우엔 file이 open되기도 하겠지만
그렇지 않는 경우엔 file이 open되지 않을것입니다.
해결방법
1. UnicodeString을 AnsiStirng 으로 변환한 후에 사용하는 방법이 있을것 같습니다.
다음과 같이 ..
AnsiString as=OpenDialog1->FileName;
FILE *f;
f=fopen(as.c_str(),"r");
2. 아니면 char*를 받는 fopen대신 wchar_t*를 받는 _wfopen을 써보세요
FILE *f;
f=_wfopen(OpenDialog1->FileName.c_str(),L"r");
그럼..
대마두 님이 쓰신 글 :
: 너무 쉬운거 제가 여쭤보는거 아닌지 모르겠네요..
:
: FILE *fp;
: if (OpenDialog1->Execute()) fp = fopen(OpenDialog1->FileName.t_str(), "r");
:
: 보시다시피 OpenDialog 를 열어 텍스트파일이름을 받고 그 파일을 fopen으로 여는 소스입니다.
:
: 기존에는 AnsiString으로 사용했기때문에 t_str()대신 c_str()을 사용했었는데요.
:
: 당연히 실행에 문제 없었습니다.
:
: 해당 프로그램을 2010으로 포팅후 실행해보니 오류 발생하네요.
:
: 브레이크 포인트 찍어보니 t_str()로 char*로 변환했을때 값이 제대로 안들어가는거 같은데요.
:
: 혹시 이런 문제 겪어보신분 있으신가요?
:
: 아님 제가 어디 잘못 사용하는 부분이 있나요?
|