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;