to może wrzucę tu swoją prockę (przy której przy testowaniu ze względu o zapomnieniu o takiej pierdołce jak ".." - straciłem połowę dysku :D)
procedure skasujFolder(dir:string);
var files:TSearchRec;
begin
{$I-}
if FindFirst(dir+'\*.*',39,files)=0 then repeat
if (files.Attr and 16)=0 then begin
FileSetAttr(dir+'\'+files.Name,32);
DeleteFile(dir+'\'+files.Name);
end;
until FindNext(files)<>0;
FindClose(files);
if FindFirst(dir+'\*.*',55,files)=0 then repeat
if (files.Attr and 16)<>0 then begin
if (files.Name<>'.') and (files.Name<>'..') then begin
skasujFolder(dir+'\'+files.Name);
end;
end;
until FindNext(files)<>0;
FindClose(files);
RmDir(dir);
IOResult;
{$I+}
end;
i przykład użycia:
skasujFolder('c:\temp');
if DirectoryExists('c:\temp') then ShowMessage('nie skasowało sie cosik') else
ShowMessage('folderu nima');
aha w procce nie używałem stałych takich jak faAnyFile tylko dodawałem sobie ich wartości, jak np liczba 39 i 55 w findFirst :)