Ich würde hier aus Performancegründen direkt mit FindFirst etc. arbeiten. Denn da bekommt man schon mit ob es sich bei dem gefundenen Eintrag um eine Datei oder ein Verzeichnis handelt und erspart sich somit das Directoryexists.
Pseudocode:
Delphi-Quellcode:
function rmdir(dir: string);
var
isEmpty: Boolean;
begin
isEmpty := TRUE;
if FindFirst() then
begin
repeat
if ((FoundItem.Attr and FA_DIRECTORY) = FA_DIRECTORY) then
rmdir(dir + '\' FoundItem.Name)
else
isEmpty := FALSE;
until (FindNext() <> 0);
FindClose();
end;
if (isEmpty) then
RemoveDir(dir);
end;