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


Автор: Гость_Гость 19.1.2005, 14:12
Приве всем!

Как можно удалить папку в которой есть, другие файлы и папки?

Спасибо!

Автор: Rennigth 19.1.2005, 14:18
да же без поиска... на этойже странице...

http://forum.vingrad.ru/index.php?showtopic=39897

Автор: _hunter 19.1.2005, 14:19
пройтись рекурсивно по всем подпапкам, удаляя из них файлы. потом можно удалить пустые папки

Автор: Snowy 19.1.2005, 14:24
Неужели есть такие люди, которые знают ответ на этот вопрос?
Какая интересная задача. Где же найти ответ?
Может воспользоваться поиском? Или заглянуть в DRKB?
А может... Нет, ну откуда Яндекс может знать...
Я теряюсь в догадках. Неужели никто не знает ответа...

Автор: Akella 19.1.2005, 15:17
Snowy, не глумись smile

Автор: z-END 19.1.2005, 15:30
Цитата(dsergey @ 19.1.2005, 15:17)
Snowy, не глумись 

зря ты так, знаешь как стресс снимает=)
я вообще за то чтобы так все отвечали, ато сидишь на работе (или что еще хуже после работы дома) башка на бекрень, а тут бац прикол и все... расслабуха=)

Автор: W_A_K_E 21.1.2005, 21:15
так как моя программа для очистки памяти то я использую вот такой код
Код

procedure Deleter(html_file_Path:String);
var
sr:TSearchRec;
ScanDir:String;
ISearch:Integer;
begin
ScanDir:=html_file_Path;
ISearch:=FindFirst(ScanDir+'*.*', faAnyfile, sr);
while ISearch=0 do
begin
if ((sr.Attr and FaDirectory)=Fadirectory)
and (sr.Name[1]<>'.') then
Deleter(ScanDir+sr.Name+'\') else
deletefile(scandir+sr.Name);
ISearch:=FindNext(sr);
end;
FindClose(sr);
removeDirectory(Pchar(html_file_Path));{Ключевой момент! Удаляем папку}
end;




procedure TForm1.Button1Click(Sender: TObject);
begin
Deleter('c:\новая папка\');

Автор: Ripper 21.1.2005, 22:03
цитирую DRKB:

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



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
Чтобы вначале "\\" было...иначе не будет удалять диры из корня

сам не проверял ... но это же DRKB smile

Автор: Akella 22.1.2005, 10:24
Цитата
так как моя программа для очистки памяти то я использую вот такой код

при чем здесь память?

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