|
sunje 님이 쓰신 글 :
: 질문의 요지는 데이터를 텍스트 파일에 순차적으로 저장하고 싶은데요
:
: 풀어서 말씀 드리면
: 실시간으로 데이터가 들어 오는데요 이게 현재 Memo1에 표현이 되거든요.
: 이것을
: Memo1->Lines->SaveToFile("C:\\test.txt");
: 이렇게 해주면 저장이 되긴 하는데 새로 저장되는 데이터가 기존에 저장된 데이터를 덮어써 버립니다.
: 기존에 저장되었던 데이터에 새로 저장되는 데이터를 순차적으로 저장하고 싶은데 어떻게 하면 되나요??
1. TFileStream을 이용하는 방식.
TFileStream *pFileStream = new TFileStream("C:\\test.txt", fmOpenReadWrite | fmShareDenyWrite);
try
{
pFileStream->Seek(0, soFromEnd);
Memo1->Lines->SaveToStream(pFileStream);
}
__finally
{
pFileStream->Free();
}
2. C 함수를 이용하는 방식
FILE *fp = fopen("C:\\test.txt", "a+");
if(fp)
{
AnsiString strText = Memo1->Lines->Text;
fwrite(strText.c_str(), strText.Length(), 1, fp);
fclose(fp);
}
3. win32 API를 이용하는 방식
HANDLE hFile = ::CreateFile("C:\\test.txt", GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ, NULL,
OPEN_ALWAYS, NULL);
if(hFile != INVALID_HANDLE_VALUE)
{
DWORD dwWrittenSize = 0;
AnsiString strText = Memo1->Lines->Text;
::WriteFile(hFile, strText.c_str(), strText.Length(), &dwWrittenSize, NULL);
::CloseHandle(hFile);
}
기타 다른 방법도 있겠지만... 비교적 간단한 방법입니다.
도움이 됬기를 바랍니다.
즐프하세요~~
|