Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.18;
Скачать: CL | DM;

Вниз

Проблема при удалении папки   Найти похожие ветки 

 
-=SPIDER=- ©   (2005-12-02 14:09) [0]

Привет всем. Возникла проблема при удалении папки со всем содержимым. Вычищаю папку рекурсивным методом - функция удаляет все файлы в папке, а затем саму папку. Подкаталоги и файлы удаляются нормально, а сама папка никак!
поиск файлов осуществляется при помощи FindFirst ... FindNext. Может у кого есть мысли, почему так получается?


 
Reindeer Moss Eater ©   (2005-12-02 14:12) [1]

Скорее всего папка не удаляется потому, что является текущей для твоего процесса.

GetlastError как всегда знает всю правду.


 
ДНО   (2005-12-02 14:13) [2]

код где?


 
Reindeer Moss Eater ©   (2005-12-02 14:14) [3]

код не нужен. нужен getlasterror


 
-=SPIDER=- ©   (2005-12-02 14:19) [4]

Вот функция:


function DelFolder(Dir: String):boolean;
var SR: TSearchRec;
    FindRes: Integer;
begin
 Dir:=ExcludeTrailingPathDelimiter(Dir);
 result:=true;
 FindRes:=FindFirst(Dir+"\*.*",faAnyFile,SR);
 While FindRes=0 do
 begin //------------------------------------------
   if ((SR.Attr and faDirectory)=faDirectory) then
   begin
     if  ((SR.Name=".")or(SR.Name="..")) then
     begin
       FindRes:=FindNext(SR);
       Continue;
     end else
     begin
       result:=result and DelFolder(Dir+"\"+SR.Name);
       FindRes:=FindNext(SR);
       Continue;
     end;
   end;
   SetFileAttributes(pchar(Dir+"\"+SR.Name), FILE_ATTRIBUTE_NORMAL );
   result:=result and DeleteFile(Dir+"\"+SR.Name);
   FindRes:=FindNext(SR);
 end; //-----------------------------------------------
 FindClose(SR);

 ChDir(GetParentDir(Dir));
 result:=result and RemoveDir(Dir);

end;


Папка не является текущей.


 
Reindeer Moss Eater ©   (2005-12-02 14:22) [5]

>Папка не является текущей.

Откуда уверенность?

function DelFolder(Dir: String):boolean;
Откуда берется значение параметра dir?

Где значение возвращенное getlasterror?


 
Reindeer Moss Eater ©   (2005-12-02 14:25) [6]

ChDir(GetParentDir(Dir));
//Здесь посмтотреть какой получился текущий каталог реально

//Чему равно Result?
//Что говорит DirectoryExists(Dir)?

result:=result and RemoveDir(Dir);


 
ДНО   (2005-12-02 16:42) [7]

коментирую ChDir(GetParentDir(Dir)); и все удаляет.


 
-=SPIDER=- ©   (2005-12-05 09:15) [8]

Никак не получается!
Код ошибки GetLastError = 32. Похоже, что папка блокируется. Перед удалением идёт процедура копирования содержимого папки таким же способом (рекурсивный поиск в подкаталогах). Может при этом блокироваться папка?


 
Reindeer Moss Eater ©   (2005-12-05 10:35) [9]

[1]



Страницы: 1 вся ветка

Текущий архив: 2005.12.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.048 c
14-1132681508
Shastox
2005-11-22 20:45
2005.12.18
Приглашения на mail.google.com


4-1128592123
Windows1
2005-10-06 13:48
2005.12.18
фокус на кнопке+нажать ее Enter^ом


3-1130505300
Draught
2005-10-28 17:15
2005.12.18
запрос на SQL


14-1132490094
AlexShm
2005-11-20 15:34
2005.12.18
7-я или 8-я?


2-1133310198
Диалог
2005-11-30 03:23
2005.12.18
Какие параметры надо выставить в TOpenDialog, чтобы выбрать неско