![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
удаление файлов в папке [D6, WinXP]
Гость2 © (2005-07-14 12:51:00)Вопрос: Как удалить в папке все файлы и поддиректории?
Kolan (2005-07-14 13:18:00) [1]
> begin...end © (14.07.05 13:17) [5]
Не моё. Все возможно...
Kolan (2005-07-14 13:17:00) [2]
> Igor_thief (14.07.05 13:09) [3]
Это наверно он и есть.
begin...end (2005-07-14 13:17:00) [3]> Kolan © (14.07.05 13:08) [2]
> if SearchRec.Attr = faDirectory then
Фтопку.
> Igor_thief (14.07.05 13:09) [3]
Он загнулся.
Igor_thief (2005-07-14 13:09:00) [4]Пример кода можно найти в faq.
Kolan (2005-07-14 13:08:00) [5]Удаление каталога с подкаталогами
Способ 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
Чтобы вначале "\\" было...иначе не будет удалять диры из корня
Fay (2005-07-14 12:52:00) [6]2 Гость2 (14.07.05 12:51)
1) По очереди руками
2) SHFileOperation