![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Удаление всех файлов и каталогов в папке...
V.Turecky © (2002-08-08 12:34:00)Всем привет.
Не поделитесь, если есть, примером удаления всех файлов и папок в каталоге. Нужно, чтобы, если файл запущен, т.е. его нельзя удалить, не выводилось никаких сообщений, а происходило удаление остальных файлов.
Filat (2002-08-08 19:11:00) [1]{ !!!!!!!!! Удаление не пустого каталога !!!!!!!! }
procedure TMain_kb.Deletedirectory(dir:string);
var
sh:SHFILEOPSTRUCT;
sr:tsearchrec;
pst:pchar;
begin
if findfirst(dir,faDirectory,sr)=0 then
begin
sh.Wnd:= Main_kb.handle;
sh.wFunc:= FO_DELETE;
Pst:=StrAlloc(Length(dir{sr.Name})+1);
StrPLCopy(Pst,dir{sr.Name},Length(dir{sr.Name})+1);
sh.pFrom:=pst;
sh.pTo:= Nil;
sh.fFlags:= FOF_NOCONFIRMATION or FOF_SILENT;
sh.hNameMappings:= Nil;
sh.lpszProgressTitle:= Nil;
SHFileOperation(sh);
StrDispose(Pst);
end;
findclose(sr);
end;
Наглухо валит.......
удачи!
Song (2002-08-08 15:08:00) [2]В FAQ есть пример копирования каталога, Вам только нужно заменить копирование на удаление.
Кстати варинат с функцией шела занимает строк пять от силы.
V.Turecky (2002-08-08 13:40:00) [3]Нашёл я использование TSearchRec. Но по-моему, подкаталоги он не удаляет.
function DeleteDir(Dir : string) : boolean;
Var
Found : integer;
SearchRec : TSearchRec;
begin
result:=false;
if IOResult<>0 then ;
ChDir(Dir);
if IOResult<>0 then begin
ShowMessage("Не могу войти в каталог: "+Dir); exit;
end;
Found := FindFirst("*.*", faAnyFile, SearchRec);
while Found = 0 do
begin
if (SearchRec.Name<>".")and(SearchRec.Name<>"..") then
if (SearchRec.Attr and faDirectory)<>0 then begin
if not DeleteDir(SearchRec.Name) then exit;
end else
if not DeleteFile(SearchRec.Name) then begin
ShowMessage("Не могу удалить файл: "+SearchRec.Name); exit;
end;
Found := FindNext(SearchRec);
end;
FindClose(SearchRec);
ChDir(".."); RmDir(Dir);
result:=IOResult=0;
end;
P.S. Я и так слишком много спрашиваю. Поэтому и спрашиваю на рзных формумах, чтобы не загружать какой-то один своими вопросами. Не только мне нужны ответы.
Song (2002-08-08 13:18:00) [4]ShFileOperation() или TSearchRec
Занятый файл и так не удалится без каких-либо проверок.
P.S. V.Turecky, sorry конечно, но что Вы по форумама скачете как по горам? ;-) Спросили бы всё в одном месте :-)