Um das ursprüngliche Problem zu beheben, versuchen Sie Folgendes:
%Vor% 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
)
[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.
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.]
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%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.
Um das ursprüngliche Problem zu beheben, versuchen Sie Folgendes:
%Vor%