Windows XP .... verzögertes Schreiben von Dateien ?



  • Hallo allerseits,

    ich benutze folgende Routine um eine Datei zu löschen, und mit einem festen "inhalt" zu erzeugen.

    DeleteFile(filename);
      ofstream file (filename, ios::binary|ios::ate);
      if (file.is_open())
      {
         unsigned char wert = 0xff;
         file.write(&wert,sizeof(wert));
         file.flush();
         file.close();
      }
    

    Leider steht nicht immer der gewünschte Inhalt in der Datei, sondern der "alte". Sprich die Funktion wird zwar aufgerufen, aber es passiert nix, obwohl alle Zeilen korrekt durchlaufen werden.

    Hat jemand ne Idee, wie ich diesen Umstand beseitigen könnt ? (WinXP, BCB5Pro)
    Bin für jeden Rat dankbar 🙂

    Andreas



  • Laß mal das 'ios::ate' weg, da du damit den Dateizeiger auf das Ende der Datei setzt (und den bestehenden Inhalt der Datei nicht überschreibst).
    Denn ohne 'ios:ate' wird die Datei mit 'ios::trunc' geöffnet, d.h. die Datei wird beim Öffnen geleert.

    Du kannst eigentlich dann sogar auf das DeleteFile() verzichten, da du die Datei ja neu anlegst.

    P.S: Warum die Datei bei dir nicht gelöscht wurde, kann ich dir leider auch nicht sagen (überprüf mal den Rückgabewert von DeleteFile() )


Anmelden zum Antworten