Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Удалить все файлы из папки


Автор: Borland_Delphi_6 16.1.2005, 19:31
Жаль, но мне так и не удалось найти работающую функцию удаления всех файлов из папки (хотя задача вроде бы не редкость). Вариант с FileListBox не предлогать smile Знаю, что это делается с помощью FindFirst и т.д., но хотелось бы увидеть [code=delphi][/code] smile

Автор: NiJazz 16.1.2005, 21:57
Вот чуть модифицированный мною код из DRKB:
Код

Procedure DelDir(Dir:string);
var SearchRec:TSearchRec;
begin
if Dir<>'' then if Dir[length(Dir)]<>'\' then Dir:=Dir+'\';
if FindFirst(Dir+'*.*', faAnyFile, SearchRec)=0 then
repeat
  if (SearchRec.name='.') or (SearchRec.name='..') then continue;
  if (SearchRec.Attr and faDirectory)<>0 then begin
   DelDir(Dir+SearchRec.name);
   RemoveDir(Dir+SearchRec.name);
  end
  else begin
   DeleteFile(Dir+SearchRec.name);
  end;
until FindNext(SearchRec)<>0;
FindClose(SearchRec);
RemoveDir(Dir);
end;

Там был пример удаления каталога с подкаталогами, но мне он не понравился.

Автор: Borland_Delphi_6 16.1.2005, 22:13
У меня drkb старой версии smile

Автор: Illusion Dolphin 16.1.2005, 22:15
Смысл в этом, хотя написать можно оптимальнее (это я оочень давно писал):
Код

Procedure deldir(dir : String);
Var
Found  : integer;
SearchRec : TSearchRec;
f,fdir:textfile;
begin
 If dir[length(dir)]<>'\' then dir:=dir+'\';
 Found := FindFirst(dir+'*.*', faAnyFile, SearchRec);
 while Found = 0 do
 begin
  if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
  begin
 If fileexists(dir+SearchRec.Name) then begin
 try
 Filesetattr(dir+SearchRec.Name,0);
 Assignfile(f,dir+SearchRec.Name);
 {$I-}
 erase(f);
 {$I+}
 except;
 end;
 end else If directoryexists(dir+SearchRec.Name) then deldir(dir+SearchRec.Name);
  end;
   Found := sysutils.FindNext(SearchRec);
 end;
 FindClose(SearchRec);
 try
removedir(dir);
 except
 end;
end;

Автор: NiJazz 16.1.2005, 22:26
Цитата
У меня drkb старой версии smile

Так скачай новую smile

Автор: Borland_Delphi_6 16.1.2005, 22:30
NiJazz
У меня проблемы с Инетом. http://forum.vingrad.ru/index.php?showtopic=39800 - как только решу эту проблему буду качать нахаляву smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)