Вниз
Скачать: CL | DM;

Удаление всех файлов и каталогов в папке...   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.009 c
7-60881
ao1973
2002-06-04 14:18
2002.08.19
Fastreport воюет с HP Laserjet 1000 под win 9X!!!!!


1-60647
AL2002
2002-08-08 16:21
2002.08.19
Подсчёт совпадений в массиве


1-60660
pvasya
2002-08-09 10:02
2002.08.19
UNICODE


1-60621
lovres
2002-08-08 13:51
2002.08.19
Как вместо окна системного сообщ. вывести своё


1-60709
Tiger
2002-08-06 15:13
2002.08.19
Шифровка текста




   Наверх