Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Вниз

Удаление папки   Найти похожие ветки 

 
_Devil_   (2006-03-08 02:25) [0]

Подскажите плиз, как удалить папку функциями АПИ?


 
Жуков Олег   (2006-03-08 02:38) [1]

Windows.RemoveDirectory, или ShellAPI.SHFileOperation


 
Dmitrij_K   (2006-03-08 19:11) [2]

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

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

-----------------------------------------
Delphi Russian Knowledge Base www.drkb.ru


 
AlexeyT ©   (2006-03-09 08:32) [3]


> Надо путь писать : c:\\test\dfg
> Чтобы вначале "\\" было...иначе не будет удалять диры из
> корня

Что за бред? Слеш должен быть одинарным. А строку надо завершать _двойным_ нулем: sh.pFrom:= PChar("c:\test"+#0).


 
_Devil_   (2006-03-10 14:08) [4]

Спасибо БОЛЬШОЕ! Будем пробовать! =)


 
_Devil_   (2006-03-10 17:44) [5]

А если использовать 2-й способ, то папка должна быть пустой? или не обязательно? И есть ли разница в скорости выполнения между 1-м и 2-м способом?
Если я использую для поиска файлов функции FindFirstFile и FindNextFile, то нужно ли как-то уничтожать после использования структуру TWin32FindData?


 
_Devil_   (2006-03-11 21:15) [6]

Че-то не работает RemoveDir...


var
D:String[255];
begin
D:="c:\temp\2006-02-08";
...
//удаляю файлы из папки D
...
//здесь папка уже пустая
RemoveDir(D);
end;



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2006.06.04;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.038 c
2-1147783724
DesperadO666
2006-05-16 16:48
2006.06.04
Помогите разобраться с pchar


1-1146036679
leonidus
2006-04-26 11:31
2006.06.04
Как в TListView отобразить больше 32000 записей


4-1142074638
Andr-04
2006-03-11 13:57
2006.06.04
Metafile в RichEdit


4-1142155729
Volf_555
2006-03-12 12:28
2006.06.04
Как закрыть окно Microsoft Internet Explorer?


15-1146739931
Pazitron_Brain
2006-05-04 14:52
2006.06.04
Что нужно, чтобы запустить IntraWeb приложение?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский