Einzelnen Beitrag anzeigen

Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: leere Ordner Finden (mit Subdirs)

  Alt 11. Jan 2005, 20:52
Mit folgender Funktion solltest du es hinnbekommen
Delphi-Quellcode:
procedure GetFileEmptyDirs(AStartDir: String; ADestList: TStrings);
  function LGetFileEmptyDirs(LDir: String; LDestList: TStrings): Boolean;
  var LSRec: TSearchRec;
      LHasFiles, LFilesInFolder: Boolean;
      LEmptyDirs: TStringlist;
  begin
    //erstmal schauen ob wir dateien haben (wenn ja müssen wir eventuell ordner hinzufügen)
    LHasFiles := False;
    if FindFirst(LDir + '\*', faAnyFile, LSRec) = 0 then
    begin
      repeat
         if not(faDirectory and LSRec.Attr <> 0) then
           LHasFiles := True;
      until (FindNext(LSRec) <> 0) or (LHasFiles);
    end;
    FindClose(LSRec);
    //jetzt alle unterordner durchgehen
    LEmptyDirs := TStringList.Create;
    if FindFirst(LDir + '\*', faAnyFile, LSRec) = 0 then
    begin
      repeat
         if (faDirectory and LSRec.Attr <> 0) and (LSRec.Name <> '.') and (LSRec.Name <> '..') then
         begin
           LFilesInFolder := LGetFileEmptyDirs(LDir + '\' + LSRec.Name, ADestList);
           if LFilesInFolder then
             LHasFiles := True
           else
             LEmptyDirs.Add(LDir + '\' + LSRec.Name);
         end;
      until (FindNext(LSRec) <> 0);
    end;
    FindClose(LSRec);
    if LHasFiles then
      ADestList.AddStrings(LEmptyDirs);
    LEmptyDirs.Free;
    //funktion verlassen und mitteilen ob wir dateien in Ordner haben
    result := LHasFiles;
  end;
begin
  ADestList.Clear;
  if LGetFileEmptyDirs(AStartDir, ADestList) = False then
    ADestList.Add(AStartDir);
end;
Beispielaufruf um alle Datei-Leeren verzeichnisse von C aufzulisten
Delphi-Quellcode:
var LList: TStringList;
begin
  LList := TStringList.Create;
  GetFileEmptyDirs('c:', LList);
  Memo1.Lines.Assign(LList);
  LList.Free;
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat