Рекурсивное удаление файлов и подкаталогов

Советы » Файлы » Рекурсивное удаление файлов и подкаталогов

{ Здесь я привожу немного сокращенный код, который я создавал для Borland Pascal 5.5 под DOS (оригинальный код не делал rmDir, поэтому вы можете поэкспериментировать с этим, передав указатель на каталог функции rmDir в конце этого кода). Я подозреваю, что Delphi-версия может быть или идентичной, или иметь некоторые различии в написании имен функций (рекомендую ознакомиться с электронной документацией по Delphi, с темой, где описаны функции для работы с файлами). Данный код не предусматривает проверку атрибутов файлов, которые могут быть установлены для предотвращения удаления файла. (В Pascal 5.5 вам необходимо между парой {$I-}{$I+} {поместить функцию, которая вызывает проблему, не знаю, делаете ли вы это в Delphi.) }
procedure

removeTree(DirName: string

); var


  FileSearch: SearchRec; begin


 
{ для начала пробегаемся, и удаляем все файлы }   chDir(DirName);
  FindFirst('*.*', Directory, FileSearch);   while

(DosError = 0) do

  begin


    if

(FileSearch.name <> '.') and

(FileSearch.name <> '..') and

      ((FileSearch.attr and

Directory) <> 0) then


    begin

      if

DirName[length(DirName)] = '' then

        removeTree(DirName + FileSearch.Name)       else

        removeTree(DirName + '' + FileSearch.Name);
      ChDir(DirName);     end

;     FindNext(FileSearch)   end

;

 
{ затем пробегаемся, и удаляем все каталоги }   FindFirst('*.*', AnyFile, FileSearch);   while

(DosError = 0) do

  begin


    if

(FileSearch.name <> '.') and

(FileSearch.name <> '..') then

      Remove(workdir);   end

;
  FindNext(FileSearch) end

;
rmDir(DirName)
end

;
 

Другое по теме:

Категории

Статьи

Советы

Copyright © 2022 - All Rights Reserved - www.delphirus.com