Löschen einer Datei -> Zugriffsfehler



  • Hi!

    Mein Problem ist, dass ich eine Datei löschen möchte. Im FAQ steht zwar der Code dafür, allerdings entsteht beim ausführen immer der Fehler, dass nicht auf den Datenträger zugegriffen werden kann. Der Fehler entsteht wohl, da ich vorher die Datei immer lade (mit LoadFromFile()). Meine Frage ist nun, wie kann ich eine Datei wieder schliessen, damit ich sie löschen kann.

    MfG Seth85



  • welches OS?

    unter linux musst du evt. noch zugriffsrechte setzen (777).

    mfg Olf



  • unter Windows XP



  • Seth85 schrieb:

    Der Fehler entsteht wohl, da ich vorher die Datei immer lade (mit LoadFromFile()).

    Das ist mit einiger Sicherheit nicht der Grund. Die LoadFromFile-Funktionen geben die Datei wieder frei, bevor sie zurückkehren.

    Wie lautet die Fehlermeldung denn konkret bzw. vollständig?



  • OK, die Fehlermeldung lautet:

    "Datei kann nicht gelöscht werden: Die Quelldatei oder vom Datenträger kann nicht gelesen werden."

    Ich lasse mir sogar den Pfad mit angeben. Der Pfad ist korrekt. Kann es allerdings sein, dass die Prozedur keine Pfadangaben akzeptiert, sondern nur Daten löschen kann, die im selben Verzeichniss sind?



  • Unwahrscheinlich. Zeig doch mal den kompletten Code für ein Minimalprogramm, das die Symptome aufweist.



  • So in der Art soll das funktionieren:

    // Beispiel
    String s = Pfad + ListBox1->Items->Strings[ListBox1->ItemIndex] + ".rtf";
    
    if(DeleteFile(s))
      ListBox1->Items->Delete(ListBox1->ItemIndex);
    else
      Application->MessageBox(s.c_str(),"",0);
    

    Der String "Pfad" wird beim Programmstart definiert. Es soll eben eine Datei gelöscht werden, die in einer ListBox enthalten ist. Das merkwürdige ist, dass es manchmal funktioniert, manchmal eben nicht. Wenn das löschen fehl schlägt, wird in der MessageBox auch der richtige Pfad angegeben.



  • Seth85 schrieb:

    Wenn das löschen fehl schlägt, wird in der MessageBox auch der richtige Pfad angegeben.

    Der richtige Pfad oder das, was du dafür hältst? Pack doch mal noch ein FileExists() in die if-Abfrage.



  • Das ganze ist ziemlich verwirrend. Ich habe 2 Dateien erstellt, eine heißt aaaaa.rtf und eine Guthaben.rtf - beide existieren laut FileExists(). Die erste kann er nicht löschen, die zweite kann er. Die Dateien sind im selben Verzeichniss.



  • Kannst du die Datei denn per Explorer löschen? Zumindest unter WinXP habe ich es schon öfter erlebt, dass sich Dateien aus unerfindlichen Gründen nicht löschen lassen wollten (im Explorer). Nach Umbenennen der Datei ging es dann auf einmal problemlos ...



  • Ja, im Explorer funktioniert es. Aber da es zu 90% (geschätzt) mit löschen funktioniert möchte ich nicht weiter darauf rumhacken.
    Wenn noch jemanden was einfällt, dann schreibt, ansonsten will ich dieses Thread abschließen.

    MfG Seth85


Anmelden zum Antworten