|
저도 몰랐던 사실이네요
TStringList 의 SaveToFile이라는 함수코드를 보면 TFileStream을 씁니다.
그런데 TFileStream은 CreateFile이라는 api로 file을 만드는데
항상 fmCreate모드로 만들더군요
TFileStream *fs=new TFileStream(sFname,fmCreate); //이런식으로요
그런데 이렇게 할경우 숨김파일일 경우 Create에러가 나네요
하지만 파일을 ReadWrite모드로 열면 문제가 없습니다.
TStringList 소스를 수정할수는 없고
아래와 같이 TFileStream을 써서 저장하면 됩니다.
void __fastcall TForm1::AddNewLog(String sNewData)
{
String sFname="C:\\test.txt";
TStringList *sLst=new TStringList;
sLst->LoadFromFile(sFname);
if(sLst->Count)ShowMessage(sLst->Strings[0]);
sLst->Add(sNewData);
if(sLst->Count>300)
sLst->Delete(0);
//저장하는 부분
TFileStream *fs=new TFileStream(sFname,fmOpenReadWrite);
sLst->SaveToStream(fs);
delete fs;
delete sLst;
}
//---------------------------------------------------------------------------
그럼...
조상진 님이 쓰신 글 :
: 안녕하세요.. __);
:
: 이번에도 도움주시다니 정말 감사드립니다.. ㅠ.ㅠ~
:
: 우선 오류 원인은 알았습니다. 파일이 숨김 파일로 되어 있기 때문에 읽기는 되는데 쓰기는 되지 않는 것이었습니다.
:
: 이건줄도 모르고 헬프를 보니 파일명 지정에 대한 언급이 일체 없길래 무지 실망했었거든요.. ;;;
:
: 그런데.. 이런경우는 어떻게 해결을 해야 하나요?
:
: 저장전에 숨김속성을 제거하고, 저장한 후에 다시 숨김속성을 지정해야 하는 것인지요?
:
: 파일에 저장할때 속성을 숨김으로 주어야 합니다.
:
: 그럼.. 부탁드리겠습니다... __);
|