Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Организация фонового удаления каталогов с содержимым [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 или так или в отдельном кодовом потоке.


Наверх

Титульная страница Поиск, карта сайта Написать письмо