Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
ВнизУдаление всех файлов и каталогов в папке... Найти похожие ветки
← →
V.Turecky (2002-08-08 12:34) [0]Всем привет.
Не поделитесь, если есть, примером удаления всех файлов и папок в каталоге. Нужно, чтобы, если файл запущен, т.е. его нельзя удалить, не выводилось никаких сообщений, а происходило удаление остальных файлов.
← →
Song (2002-08-08 13:18) [1]ShFileOperation() или TSearchRec
Занятый файл и так не удалится без каких-либо проверок.
P.S. V.Turecky, sorry конечно, но что Вы по форумама скачете как по горам? ;-) Спросили бы всё в одном месте :-)
← →
V.Turecky (2002-08-08 13:40) [2]Нашёл я использование 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 15:08) [3]В FAQ есть пример копирования каталога, Вам только нужно заменить копирование на удаление.
Кстати варинат с функцией шела занимает строк пять от силы.
← →
Filat (2002-08-08 19:11) [4]{ !!!!!!!!! Удаление не пустого каталога !!!!!!!! }
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;
Наглухо валит.......
удачи!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c