Einzelnen Beitrag anzeigen

Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Prüfen, ob Ordner leer ist

  Alt 26. Aug 2006, 12:22
Moin DeluxXx,

ich würd's so machen:

Delphi-Quellcode:
function IsEmptyFolder(const AsFolder : string) : boolean;

var
  sr : TSearchRec;

begin
  Result := FindFirst(AsFolder+'\*.*',faAnyFile,sr) = 0;
  if not Result then exit;
  try
    Result := false;
    repeat
      if (sr.Attr and faDirectory) = faDirectory then begin // Verzeichnis?
        if (sr.Name <> '.') and (sr.Name <> '..') then exit; // "Echtes" Verzeichnis? => Nicht leer
      end else begin
        exit; // Datei => Nicht leer
      end;
    until FindNext(sr) <> 0;
    Result := true;
  finally
    FindClose(sr);
  end;
end;
Da mehrere aufeinander folgende Pfadtrenner (\) von Windows als einer angesehen werden, kann man sich die Verwendung von IncludeTrailingPathDelimiter sparen.
Ausserdem sollte man auch immer die Resourcenschutzblöcke (try/finally) verwenden.

Da . und .. Verzeichnisse sind brauchst Du in Deinem Falle auch nicht darauf zu testen, wenn es sich schon nicht um ein Verzeichnis handelt.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat