Verzeichnis löschen?



  • 1. Also ich würde gerne das aktuelle Verzeichnis auslesen aber mit getcurrentdirectory geht das nicht.

    Weiß jemand wie das geht?

    2. ich lösche den ganzen Ordner den ich erstellt habe mit folgender Funktion -->

    SHFILEOPSTRUCT shFileDel;
    	memset(&shFileDel, 0, sizeof(SHFILEOPSTRUCT));
    	shFileDel.hwnd = m_hWnd;
    	shFileDel.wFunc = FO_DELETE;
    	shFileDel.pFrom = "c:\\testfolder\\*.*";
    	shFileDel.fFlags = FOF_FILESONLY | FOF_NOCONFIRMATION;
    	if (SHFileOperation(&shFileDel) )
    

    Das funktioniert ja, aber nur wenn ich das Programm schliesse und nicht sofort.
    Warum ist das so? Kann ich das nicht sofort löschen?

    3. Denn danach kommt

    RemoveDirectory("C:\\testfolder");
    

    Und RemoveDirectory funktioniert ja nur mit einem leeren Ordner. Und wenn der Ordner erst geleert wird wenn das Programm geschlossen ist hat dies auch keinen Sinn.

    Kann mir dazu jemand helfen?

    Danke 😕 😕 😕



  • skorpions77 schrieb:

    1. Also ich würde gerne das aktuelle Verzeichnis auslesen aber mit getcurrentdirectory geht das nicht.

    "Geht nicht" ist keine Fehlerbeschreibung.

    skorpions77 schrieb:

    2. ich lösche den ganzen Ordner den ich erstellt habe mit folgender Funktion -->

    SHFILEOPSTRUCT shFileDel;
    	memset(&shFileDel, 0, sizeof(SHFILEOPSTRUCT));
    	shFileDel.hwnd = m_hWnd;
    	shFileDel.wFunc = FO_DELETE;
    	shFileDel.pFrom = "c:\\testfolder\\*.*";
    	shFileDel.fFlags = FOF_FILESONLY | FOF_NOCONFIRMATION;
    	if (SHFileOperation(&shFileDel) )
    

    Das funktioniert ja, aber nur wenn ich das Programm schliesse und nicht sofort.
    Warum ist das so? Kann ich das nicht sofort löschen?

    3. Denn danach kommt

    RemoveDirectory("C:\\testfolder");
    

    Und RemoveDirectory funktioniert ja nur mit einem leeren Ordner. Und wenn der Ordner erst geleert wird wenn das Programm geschlossen ist hat dies auch keinen Sinn.

    Kann mir dazu jemand helfen?

    Danke 😕 😕 😕

    Möglicherweise ist noch irgendein Dateizeiger oder sowas offen.



  • OK super .... Danke
    hatte einen Tippfehler und ca. 100 mal drübergelesen somit Nr1 hat sich erledigt.

    2. wie kann ich das überprüfen? Ich mache sonst nichts ausser die Funktion laufen lassen.
    Da sollte nichts offen sein.



  • Wenn ich das richtig sehe liegt der Fehler im Detail 🙂
    Ändere mal folgende Zeile:

    shFileDel.pFrom = "c:\\testfolder\\*.*";
    

    in:

    shFileDel.pFrom = "c:\\testfolder";
    

    Du willst ja den kompletten Ordner mit Inhalt löschen und nicht nur den Inhalt. Das RemoveDirectory kannst du dir dann schenken



  • Habe ich probiert nun bekomme ich eine Windows Fehlermeldung wo steht, dass der Ordner nicht leer ist.

    Aber dEUs dürfte schon recht haben, weil wenn ich das Programm ein zweites mal durchlaufen lassen ohne es zu beenden bekomme ich die Fehlermeldung das die erste Datei in dem Ordner schreibgeschützt ist und nicht gelöscht werden kann.

    Nur habe ich keine Ahnung wo die schreibgeschützt wird.
    Erkennt das jemand?



  • ÄÄÄÄHHHMMMMMMMMM .....
    kann es sein, dass ich beim erstellen der Files eine Fehler gemacht habe?

    ::CreateFile(m_test,GENERIC_WRITE,FILE_SHARE_DELETE,NULL,CREATE_NEW,FILE_ATTRIBUTE_NORMAL,NULL);
    

    Ich habe jetzt gerade den Ablauf getestet wenn ich keine Files erstellt habe.
    Kann es sein, dass hier der Fehler leigt?
    Denn ohne die File wird der Ordner gelöscht.
    😕



  • Danke hat sich schon erledigt.
    Blöder Fehler habe den Handle wirklich vergessen zu beenden.

    So funktioniert es einwandfrei.

    Danke



  • 3fach-Post...



  • Und du kommst n Jahr zu spät mit deinem Kommentar :xmas1:


Anmelden zum Antworten