@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;
|