Oder vollständig:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
procedure DeleteEmptyDirectories(Path : string);
var
SearchRecord : TSearchRec;
begin
if FindFirst(IncludeTrailingPathDelimiter(Path) + '*.*', faAnyFile, SearchRecord) = 0 then
begin
repeat
if (SearchRecord.Name <> '.') and (SearchRecord.Name <> '..') and (SearchRecord.Attr and faDirectory = faDirectory) then
DeleteEmptyDirectories(IncludeTrailingPathDelimiter(Path) + SearchRecord.Name);
until FindNext(SearchRecord) <> 0;
FindClose(SearchRecord);
end;
RemoveDirectory(PChar(IncludeTrailingPathDelimiter(Path)));
end;
begin
if DirectoryExists(ParamStr(1)) then
DeleteEmptyDirectories(ParamStr(1));
end.
Prinzipiell könnte man faAnyFile durch eine Maske ersetzen, die spezifischer ist (faDirectory or faHidden or faReadOnly or ...). Da FindFirst intern aber die Windows
API FindFirstFile benutzt und selbige stets alle Dateien zurückliefert und diese Masken nicht unterstüzt, ist die Verwendung von faAnyFile deutlich einfacher ohne dabei großartig Performance einzubußen.