![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление каталога с содержимым [D6, D7, Win95/98, Win2k]
Karburator © (2003-09-03 16:20:00)
Не смог найти функцию удаления каталога со всем содержимым, пришлось написать, но каталоги почему-то не удаляются. Логически вроде правильно. нифига не понимаю. Help me!!!
мой код:
function TForm1.DirDel(path: string): integer;
var SearchRec: TSearchRec;
Begin
if findfirst(path+"\*", faAnyFile, SearchRec)=0 then
if (SearchRec.Name[1]<>".") then
if FileExists(path+"\"+SearchRec.Name) then DeleteFile(path+"\"+SearchRec.Name)
else if SetCurrentDir(path+"\"+SearchRec.Name) then DirDel(path+"\"+SearchRec.Name);
while findnext(SearchRec)=0 do
if (SearchRec.Name[1]<>".") then
if FileExists(path+"\"+SearchRec.Name) then DeleteFile(path+"\"+SearchRec.Name)
else if SetCurrentDir(path+"\"+SearchRec.Name) then DirDel(path+"\"+SearchRec.Name);
findclose(SearchRec);
if not removedir(path) then showmessage("""+path+ "" - незя удалить");
end;
Song (2003-09-06 18:58:00) [1]
ShFileOperation()
Verg (2003-09-04 17:26:00) [2]
Эта функция есть в комплекте RxLib (unit FileUtil)
function ClearDir(const Path: string; Delete: Boolean): Boolean;
som (2003-09-04 13:14:00) [3]
http://www.codenet.ru/progr/delphi/quest040.php
Anatoly Podgoretsky (2003-09-03 17:15:00) [4]
Зачем писать, есть же готовая в системе - SetFileOperation
han_malign (2003-09-03 16:41:00) [5]
>if FileExists(path+"\"+SearchRec.Name)
- if((SearchRec.Attr and faDirectory)=0)
>if SetCurrentDir(path+"\"+SearchRec.Name)
- ай молодца - заблокировал каталог и удивляется что он не удаляется... Совершенно лишнее, ведь указывается длинный путь <path+"\"+SearchRec.Name>.
З.Ы.>if (SearchRec.Name[1]<>".")
- между прочим ".dot" - вполне нормальное имя файла(каталога), хотя я сам так всегда делаю(зная что у меня таких нет).
З.З.Ы. А чтобы не писать два раза одинаковый набор набор операция, увеличивая размер кода - используют repeat until