@sherwood_littel !
Добрый день!
Для удаления всех файлов в папке можно сделать следующее
Для новых версий Delphi
1
|
TDirectory.Delete('Путь к папке', true); |
для старых версий в рукопашную перебирать файлы в папке
1 2 3 4 5 6 7 8 9 |
var FileName :TSearchRec; i :integer; ... i := FindFirst('Путь к папке\*.*', faAnyFile, FileName); if i = 0 then DeleteFile(FileName.Name); while (FindNext(FileName) = 0) do DeleteFile(FileName.Name); |
Если же необходимо удалять файлы и во вложенных папках, то стоит использовать рекурсию.
@sherwood_littel
Можно использовать функцию RemoveDirectory из модуля Windows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
uses Windows; procedure DeleteFilesFromFolder(const FolderPath: string); var FindHandle: THandle; FindData: TWin32FindData; begin // Находим первый файл в папке FindHandle := FindFirstFile(PChar(FolderPath + '*'), FindData); if FindHandle <> INVALID_HANDLE_VALUE then try repeat // Если это не папка, удаляем файл if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then DeleteFile(PChar(FolderPath + '' + FindData.cFileName)); until not FindNextFile(FindHandle, FindData); finally FindClose(FindHandle); end; end; |
Для удаления также всех вложенных папок и файлов можно использовать функцию RemoveDirectory из модуля Windows:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
procedure DeleteFolder(const FolderPath: string); var FindHandle: THandle; FindData: TWin32FindData; ChildPath: string; begin // Находим первый файл/папку в папке FindHandle := FindFirstFile(PChar(FolderPath + '*'), FindData); if FindHandle <> INVALID_HANDLE_VALUE then try repeat // Пропускаем папки "." и ".." if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0 then if (FindData.cFileName <> '.') and (FindData.cFileName <> '..') then begin // Удаляем все файлы/папки в этой папке ChildPath := FolderPath + '' + FindData.cFileName; DeleteFolder(ChildPath); // Удаляем саму папку RemoveDirectory(PChar(ChildPath)); end else // Удаляем файлы DeleteFile(PChar(FolderPath + '' + FindData.cFileName)); until not FindNextFile(FindHandle, FindData); finally FindClose(FindHandle); end; end; |