|
새로 생성 하시는거라면 간단하게
TFileStream *fs = new TFileStream( Path + FileName, fmCreate );
윗 부분만 하시죠 저는 아무 이상 없이 쓰거든요. 위의 소스대로 하시면 기존에 파일이 있던 없던 새로 생성 하는 방법이고 아마 이것을 원하시는것 같고요. TFileStream에 Write를 하시게 되면 자동으로 Position 프로퍼티는 증가 합니다. 꼭 fs->Position++ 하실 필요는 없을 듯. 참고로 제일 마지막에 연속 해서 붙여 쓰실려면 아래와 같이 하시면 됩니다.
fs->Position = fs->Size;
도움 되시기를 ^^; 또 궁금하신 사항이 있으면 문의 주세요!
초보 님이 쓰신 글 :
: TFileStream *fs = new TFileStream(fname,fmCreate || fmOpenReadWrite);
: 위와 같이 쓰면 화일이 없으면 새로 만들고 만약 있으면 열어서
: 읽거나 쓰거나 할수 있지 않은가여?
:
: 1)fmCreate 쓰고 화일을 열면 처음에만 생성 다응 실행시는 계속 에러가 발생합니다.
: 2)fmOpenReadWrite는 화일이 존재하든지 아니든지 간에 에러가 발생합니다.
: 3)fmCreate || fmOpenReadWrite 화일이 있을때나 없을때나 에러 발생합니다.
: void __fastcall TFormMMOption::BitBtnCancelClick(TObject *Sender)
: {
: sprintf(fname, "%s\\%s.cfg", LibraryPath, cfgname);
: TFileStream *fs = new TFileStream(fname,fmCreate || fmOpenReadWrite);
: for(int j=0; j<(int)poiling; j++) {
: fs->Seek(j,soFromBeginning);
: fs->Write(eeRomBuff + j,sizeof(char));
: }
: delete fs;
: Close();
: }
: 전 위의 함수에서 TFileStream을 사용하고 있습니다.
: 그런데, 1)2)3)과 같은 분제가 발생하나요?
: 그리고,eeRomBuff에 있는 내용을 1바이트씩 poiling만큼 불러와 화일에 저장하고 싶은데..
: 위의 fmCreate로 하면 화일은 만들어지지만 아무내용도 없습니다.
: 그래서 fs->Position++;를 붙히면 1바이트씩 건너서 표현됩니다.
: 문제점 좀 알려주세여..
|