Удаление каталога с подкаталогами |
Previous Top Next |
Способ 1: проход по дереву каталогов (Функция для удаления каталогов, взята из рассылки "Мастера DELPHI. Новости мира компонент, FAQ, статьи..." - собственно код аналогичен написанному мной коду по рекурсивному проходу каталогов здесь)
Code: |
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
Code: |
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
Чтобы вначале "\\" было...иначе не будет удалять диры из корня
Автор ответа: Baa
©Drkb::03155
Взято с Vingrad.ru http://forum.vingrad.ru