Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#30

AW: Bestimmte Dateien und Verzeichnise in einem Stammverzeichnis löschen

  Alt 16. Mär 2012, 15:25
Okay das zum löschen eines Verzeichnisses hab ich bereits hier in der community gefunden.. ich hab mir so überlegt, ich würde gern die pfade wo sich der Ordner oder wenn mehr in dem Stammverzeichnis vorkommen gerne an eine Stringlist übergeben.. aber wie suche ich nach einem Ordnernamen?
Hier eine komplexere Funktion, die auch Ordner rekursiv durchsucht. Auch die Funktion habe ich für dich etwas gekürzt. Sollte es irgendwo einen Fehler geben, dann liegt es an der Kürzung.

Solltest du nur Ordner suchen, dann guck in der zweiten Hälfte wie nach Ordnern gesucht wird.

Delphi-Quellcode:
//Liefert Datei-Liste laut Maske
procedure GetFiles(Path, ExtMask: String; List: TStrings; SubFolder: Boolean);
var
  Attrib: Integer;
  Search: TSearchRec;
begin
  if Length(Path) > 0 then
    if Path[Length(Path)] <> '\then Path := Path + '\';

  Attrib := faArchive or faReadOnly or faHidden;// damit es keinen Krach gibt

  if FindFirst(Path + '*.' + ExtMask, Attrib, Search) = 0 then
  repeat
    List.Add(Path + Search.Name);
  until FindNext(Search) <> 0;

  FindClose(Search);

  if SubFolder then
  begin
    if FindFirst(Path + '*.*', faDirectory, Search) = 0 then
    repeat
      if ((Search.Attr and faDirectory) = faDirectory) and
        (Search.Name[1] <> '.') then
        GetFiles(Path + Search.Name, ExtMask, List, SubFolder);
    until FindNext(Search) <> 0;

    FindClose(Search);
  end;
end;
Bedenke bitte, dass du jetzt rekursiv arbeitest. Solltest du auf die Idee kommen List mit einem try except Block zu schützen, fliegt dir bei einer Exception die ganze Funktion um die Ohren, da wegen rekursiv dann immer wieder auf eine freigegebene TStrings-Liste zugegriffen wird.

Geändert von Popov (17. Mär 2012 um 00:08 Uhr) Grund: Kleinen Fehler ausgebessert
  Mit Zitat antworten Zitat