WriteFile
-
Hallo ,
ich öffne ein Logfile, und schreibe returnierte Strings alles wunderber.
Nach n Zeilen setze ich den Filepointer wieder auf Dateianfang, und
mache dann einfach weiter. Was ich erhalte ist zu 90% eine zerstückelte Datei.Ich habe bereits den Schreibcashe abgestellt, jedoch ohne Wirkung auch ein Flush
vor jedem Write hilft nicht:(so wird es geöffnet) m_hFile = ::CreateFileA( Path, GENERIC_READ|GENERIC_WRITE, 0,//FILE_SHARE_READ|FILE_SHARE_WRITE, LPSECURITY_ATTRIBUTES)NULL, OPEN_ALWAYS, FILE_FLAG_WRITE_THROUGH, (HANDLE)NULL); ::SetFilePointer(m_hFile,0,0,FILE_END); (so schreibe ich den static string) DWORD nw;::WriteFile(m_hFile,fStr.GetBuffer(),fStr.GetLength(),&nw,0); (ab und zu setze ich den Pointer auf anfang) ::SetFilePointer(m_hFile,0,0,FILE_BEGIN);
Nach dem setzen des Zeigers auf den Start , habe ich oft müll in meinem File.
Danke für Hinweise,
gruß
Karsten
-
Soll die Datei wieder bei der Größe "0" anfangen, wenn Du wieder von Vorne anfängst, oder soll der Inhalt der ganzen Einträge beibehalten werden?
-
ja lach, ist ja logisch wenn die Zeilen unterschiedliche längen haben
herjee auf was man alles kommt ^^
-
Du musst einfach nur noch nach dem "SetFilePointer(0, BEGIN)" ein "SetEndOfFile" aufrufen
http://msdn.microsoft.com/en-us/library/windows/desktop/aa365531