Форум: "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: Использование ShellApiuses 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.46 MB
Время: 0.039 c