Yvision.kzYvision.kz
kk
Разное
Разное
399 773 постов41 подписчиков
Всяко-разно
0
06:15, 24 декабря 2011

Заметка быдла пишущего ногами, запись III

Рекурсивный метод удаления файлов и вложенных папок по заданному пути:

function KillDir (Dir: AnsiString): boolean;
var
  Sr: SysUtils.TSearchRec;
begin
{$I-}
  if (Dir <> '') and (Dir[length(Dir)] = '\') then
    Delete(Dir, length(dir), 1);
  if FindFirst(Dir + '\*.*', faDirectory + faHidden + faSysFile +
    faReadonly + faArchive, Sr) = 0 then
    repeat
      if (Sr.Name = '.') or (Sr.Name = '..') then
        continue;
      if (Sr.Attr and faDirectory <> faDirectory) then
   begin
if AnsiLowerCase(ExtractFileExt(sr.Name)) = '.tmp' then 
 begin
        FileSetReadOnly(Dir + '\' + sr.Name, False); 
        DeleteFile(Dir + '\' + sr.Name);
 end
   end
      else
        KillDir(Dir + '\' + sr.Name);
    until FindNext(sr) <> 0;
  FindClose(sr);
  RemoveDir(Dir); // Удалит пустой каталог
  KillDir := (FileGetAttr(Dir) = -1);
end;
 
0
234
0