![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как можно удалить папку?
Геральт © (2002-03-05 19:41:00)Не подскажите, как можно удалить непустую папку. Желательно без задавания лишнх вопросов - папка временная и пользователю не следует знать о ее существовании
Olivka (2002-03-05 21:49:00) [1]если используешь RxLib, то там есть функция удаления папки, очень удобная
Геральт (2002-03-05 21:27:00) [2]Спасибо
lipskiy (2002-03-05 20:23:00) [3]
//##############################################################################
// удаляет все содержимое каталога вместе с подкаталогами
// RemoveRoot указывает на необходимость удаления корня каталога
// при установке в False функция используется для очистки содержимого каталога
function sRemoveDir(Dir:string; RemoveRoot:boolean):Boolean;
//##############################################################################
var i:Integer;
SRec:TSearchRec;
FN:String;
begin
Result:= True;
if Dir[Length(Dir)] <> "\" then Dir:= Dir + "\";
Dir:= Dir + "*.*";
i:= FindFirst(Dir, faAnyFile, SRec);
while i = 0 do
begin
FN:= ExtractFileDir(Dir)+"\"+SRec.Name;
if SRec.Attr = faDirectory then
begin
if (SRec.Name <> "" ) and (SRec.Name <> ".") and (SRec.Name <> "..") then
sRemoveDir(FN,True);
end
else
begin
if SRec.Attr <> faArchive then FileSetAttr(FN, faArchive);
if not DeleteFile(FN) then Result:= false;
end;
i:= FindNext(SRec);
end;
FindClose(SRec);
if RemoveRoot then
try
if not RemoveDir(Dir) then Result:= false;
except
end;
end;