uses
SysUtils, Classes;
function DeleteEmptyDir(const Path: String): Boolean;
var
Index: Integer;
DirNames: TStringList;
SearchRec: TSearchRec;
begin
Result := True;
if Path = '' then
begin
Exit;
end;
DirNames := nil;
try
DirNames := TStringList.Create;
{ Search }
if FindFirst(IncludeTrailingPathDelimiter(Path) + '*.*',faAnyFile,SearchRec) = 0 then
begin
try
repeat
if (SearchRec.Name = '.') or (SearchRec.Name = '..') then
begin
Continue;
end;
if (SearchRec.Attr and faDirectory) <> 0 then
begin
DirNames.Add(IncludeTrailingPathDelimiter(Path) + SearchRec.Name);
end
else
begin
Result := False;
end;
until (FindNext(SearchRec) <> 0);
finally
FindClose(SearchRec);
end;
end;
{ Delete sub directories }
for Index := 0 to DirNames.Count - 1 do
begin
if DeleteEmptyDir(DirNames.Strings[Index]) = True then
begin
{ Delete }
if RemoveDir(DirNames.Strings[Index]) = False then
begin
RaiseLastOSError;
end;
end
else
begin
Result := False;
end;
end;
finally
DirNames.Free;
end;
end;
Object Pascal