Delphi, lösche Ordner mit Inhalt

7

wenn ich einen Unterordner im Ordner habe - dieser Code ist kein Ordner löschen ... Gibt es einen Fehler?

%Vor%     
Emi 19.04.2011, 12:55
quelle

5 Antworten

21

Wenn ich Sie wäre, würde ich dem Betriebssystem nur sagen, dass es den Ordner mit seinem gesamten Inhalt löschen soll. Tun Sie dies, indem Sie schreiben ( uses ShellAPI )

%Vor%

[Wenn Sie

tun %Vor%

stattdessen erhalten Sie einen schönen Bestätigungsdialog. Wenn du es tust

%Vor%

Sie erhalten den Bestätigungsdialog nicht, aber Sie erhalten einen Fortschrittsbalken, wenn die Operation langwierig ist. Wenn Sie schließlich das Flag FOF_ALLOWUNDO hinzufügen, verschieben Sie das Verzeichnis in den Papierkorb, anstatt es dauerhaft zu löschen.

%Vor%

Natürlich können Sie Flags beliebig kombinieren:

%Vor%

zeigt keine Bestätigung an (aber ein Fortschrittsdialog, weil Sie FOF_NO_UI nicht angeben) und das Verzeichnis wird in den Papierkorb verschoben und nicht endgültig gelöscht.]

    
Andreas Rejbrand 19.04.2011, 12:59
quelle
20

Am einfachsten ist es, TDirectory.Delete(Dir, True) aufzurufen.

TDirectory wird in IOUtils gefunden, was eine ziemlich neue RTL-Erweiterung ist.

Das True -Flag wird an den Parameter Recursive übergeben, was bedeutet, dass der Inhalt der Verzeichnisse vor dem Entfernen des Verzeichnisses gemerkt wird, ein wesentlicher Teil des Löschens von Verzeichnissen.

In einem Kommentar teilen Sie uns mit, dass Sie Delphi 7 verwenden und daher nicht verwendet werden kann.

Ihr Code sieht größtenteils gut aus. Du meinst jedoch nicht:

%Vor%

Ich denke du meinst:

%Vor%

Ich würde es wahrscheinlich wie folgt schreiben:

%Vor%     
David Heffernan 19.04.2011 12:59
quelle
7

Als ich das letzte Mal einen Ordner mit Inhalt löschen musste, benutzte ich die JCL :

%Vor%

Der letzte Parameter gibt an, ob die Dateien in den Papierkorb verschoben werden sollen oder nicht, was ein netter Bonus ist.

    
Heinrich Ulbricht 19.04.2011 13:21
quelle
5

Um das ursprüngliche Problem zu beheben, versuchen Sie Folgendes:

%Vor%     
Remy Lebeau 19.04.2011 20:03
quelle
3
%Vor%

DSiWin32 ist ein Open-Source-Projekt, das mit der Lizenz "Benutze nach Wunsch" veröffentlicht wird.

    
gabr 19.04.2011 13:27
quelle

Tags und Links