Рекурсивное удаление файлов и подкаталогов
{ Здесь я привожу немного сокращенный код, который я создавал для 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; |
[001705]