Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизПроблема при удалении папки Найти похожие ветки
← →
-=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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.014 c