Sources
Delphi Russian Knowledge Base
DRKB - база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Удаление каталога с подкаталогами

01.01.2007
Baa

Способ 1: проход по дереву каталогов

Функция для удаления каталогов, взята из рассылки "Мастера DELPHI. Новости мира компонент, FAQ, статьи..." - собственно код аналогичен написанному мной коду по рекурсивному проходу каталогов здесь)

Function MyRemoveDir(sDir : String) : Boolean;
var
 iIndex : Integer;
 SearchRec : TSearchRec; 
 sFileName : String; 
begin 
 Result := False; 
 sDir := sDir + '*.*'; 
 iIndex := FindFirst(sDir, faAnyFile, SearchRec); 
 while iIndex = 0 do 
 begin 
  sFileName := ExtractFileDir(sDir)+'\'+SearchRec.Name; 
  if SearchRec.Attr = faDirectory then 
  begin 
   if (SearchRec.Name <> '' ) and (SearchRec.Name <> '.') and (SearchRec.Name <> '..') then MyRemoveDir(sFileName); 
  end 
  else 
  begin 
   if SearchRec.Attr <> faArchive then FileSetAttr(sFileName, faArchive); 
   if NOT DeleteFile(sFileName) then ShowMessage('Could NOT delete ' + sFileName); 
  end; 
  iIndex := FindNext(SearchRec); 
 end; 
 FindClose(SearchRec); 
 RemoveDir(ExtractFileDir(sDir)); 
 Result := True; 
end;

Способ 2: Использование ShellApi

uses ShellApi;
...
var sh : SHFILEOPSTRUCT;
begin
...
sh.Wnd := Application.Handle;
sh.wFunc := FO_DELETE;
sh.pFrom := 'c:\\test\0';
sh.pTo := nil;
sh.fFlags := FOF_NOCONFIRMATION or FOF_SILENT;
sh.hNameMappings := nil;
sh.lpszProgressTitle := nil;

SHFileOperation (sh);
... 

Комментарий:

Надо путь писать: c:\\test\dfg

Чтобы вначале "\\" было... иначе не будет удалять диры из корня

Previous page:
Как скопировать директорию?
Top:
DRKB
Next page:
Как найти путь к моей программе?