Последние записи
- Удаление папки с файлами
- Распечатка файла
- Преобразовать массив байт в вещественное число (single)
- TChromium (CEF3), сохранение изображений
- Как в Delphi XE обнулить таймер?
- Изменить цвет шрифта TextBox на форме
- Ресайз PNG без потери прозрачности
- Вывод на печать графического файла
- Взаимодействие через командную строку
- Перенести программу из Delphi в Lazarus
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
1st
Дек
Удаление папки с файлами
Posted by obzor under Delphi
Поможете мне устранить такой баг?
У меня в папке «E:\tmp» имеется множество файлов и папок. Мне нужно удалить полностью всю папку.
Вот код:
type TArrayString = array of string;
procedure DirList(Dir: string; var DirArr: TArrayString; Over: byte = 0);
var F: TSearchRec;
begin
ChDir(Dir);
if Over=0 then
SetLength(DirArr, 0);
SetLength(DirArr, Length(DirArr)+1);
DirArr[Length(DirArr)-1]:=Dir;
if Dir[Length(Dir)]<>'\' then
Dir:=Dir+'\';
if FindFirst('*', faAnyFile, F)=0 then
repeat
if F.Attr and faDirectory <> faDirectory then
DeleteFile(Dir+F.Name);
until FindNext(F)<>0;
if FindFirst('*', faAnyFile, F)=0 then
repeat
if F.Attr and faDirectory = faDirectory then
if not (F.Name='.') and not (F.Name='..') then
begin
DirList(Dir+F.Name, DirArr, 1);
ChDir(Dir);
end;
until FindNext(F)<>0;
FindClose(F);
if Over=0 then
ChDir('C:\');
end;
procedure TForm1.Button1Click(Sender: TObject);
var DirArr: TArrayString;
i: integer;
begin
DirList('E:\tmp', DirArr);
for i:=High(DirArr) downto Low(DirArr) do
RemoveDir(DirArr);
end;
Проблема заключается в том, что программа удаляет папки с ошибками (см. скриншот).
Подробнее: при нажатии на кнопку папка физически не удаляется (она остается), но зайти в нее не получается. Однако, при закрытии программы она автоматически удаляется.
В связи с этим вопрос: как удалить папку с файлами полностью без закрытия приложения?
я удаляю так
//----- удаляем файлы в заданной папке -----------------------------------------
procedure DelFile(FullName:string);
var SHFP:SHFILEOPSTRUCT;
begin
Windows.SetFileAttributes(PChar(FullName),0);//снимаем с него все атрибуты
ZeroMemory(@SHFP,SizeOf(SHFP));
with SHFP do
begin
wFunc:=FO_DELETE;
pFrom:=pChar(FullName);
fFlags:=FOF_NOCONFIRMATION;//втихаря скрытно удаляем
end;
SHFileOperation(SHFP);
end;
попробуй вместо файла поставить папку. вдруг сработает.
Случайные статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)