![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Организация фонового удаления каталогов с содержимым [D6, WinXP]
DennisLNC © (2004-04-26 12:52:00)Помогите пожалуста организовать фоновое удаление папок со всем содержимым (тут наверно придется создать отдельный поток ?)
заранее благодарен
panov (2004-04-29 19:00:00) [1]>DennisLNC © (29.04.04 17:42) [7]
Заполни сначала StringList именами, потом в цикле удаляй...
Mim1 (2004-04-29 18:59:00) [2]На страничке Anatoly Podgoretsky © (26.04.04 13:02) [1] были статьи про синхранизацию потоков.
DennisLNC (2004-04-29 17:42:00) [3]Помогло Api это вещь
так как же организовать строку прогресса удаления может сначала узнать обьем и изходя от этого начать плясать ?
DennisLNC (2004-04-28 14:33:00) [4]попробую спасибо
А не подскажете как организовать это же удаление но со строкой прогресса удаления ??
И еще не подскажете где можно чего почитать про то что можно ипользовать в потоках а что нет ?
Digitman (2004-04-27 16:00:00) [5]
> создаю поток который удаляет папки
> в 98 работает нормально
> хр выдает ошибку при удалении но удаяет и говорит недопустимый
> дескриптор окна при закрытии
нормально это заведомо работать не может, потому что Showmessage - потоконебезопасная процедура
Reindeer Moss Eater (2004-04-27 15:58:00) [6]Убери ShowMessage совсем или замени на MEssageBox
DennisLNC (2004-04-27 15:53:00) [7]поток вызывает function DeleteDir
DennisLNC (2004-04-27 15:51:00) [8]
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;
создаю поток который удаляет папки
в 98 работает нормально
хр выдает ошибку при удалении но удаяет и говорит недопустимый дескриптор окна при закрытии
Anatoly Podgoretsky (2004-04-26 13:02:00) [9]Фоновое это что - не видимо или паралельно.
ShFileOperation или так или в отдельном кодовом потоке.