역시 멤버에 문제가 있네요. char *sExt 이 멤버는 스트링 자체가 아니라 스트링이 있는 메모리 위치를 가리키는 그냥 포인터일 뿐이기 때문에, 이 구조체를 그대로 파일스트림에 쓰면 4바이트 주소만을 쓸 뿐이죠(물론 32비트일 경우). 이 멤버가 제대로 기록되려면 char 배열을 쓰든지, 아니면 구조체를 통째로 써넣는 대신 멤버별로 각각 써넣든지 해야 하겠지요.
축구 님이 쓰신 글 :
:
: class t_FileInfo
: {
: public :
: char sExtLength;
: char *sExt;
: };
:
: 이렇게 했어요
:
:
: 박지훈.임프 님이 쓰신 글 :
: : 구조체의 내용을 보여주시지요. 구조체 멤버들에 원인이 있을 수도.
: : 예를 들어 구조체 내에 AnsiString이나 UnicodeString이 있다든지요.
: : 아니면 다른 OS에서 쓴 파일을 읽어오는데 바이트 바운더리 얼라인이 다른 경우일 수도 있겠네요.
: :
: :
: : 축구 님이 쓰신 글 :
: : : FileStream으로 읽고 쓰는데요. 이건 깨져서 저장되는데 이건 정상 이잖아요.
: : :
: : : 구조체에 값을 넣고 파일로 저장을 했는데 구조체 크기만큼
: : :
: : : 근데 읽어올때 구조체 만큼 읽어오는데 왜 엉뚱한 값이 들어올까요.
: : :
: : : pLoadFileStream->Read(&tFileInfo, sizeof(t_FileInfo));
|