Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
ВнизПочему не удаляется? Найти похожие ветки
← →
Skywalker (2002-09-19 12:02) [0]вот есть функция, которая удаляет каталог со всеми подкаталогами и файлами используя рекурсию
вопрос: почему не удаляется самый нижний ПУСТОЙ!!! каталог
function EraseDir(EDir:string):boolean;
var
Index:integer;
SearchRec:TSearchRec;
FileName:string;
Position:byte;
function ExtractBit(Bit:word;Num:integer):boolean;
begin
Result:=false;
Num:=Num Shr (Bit-1);
if ((Num) mod 2)=1 then Result:=true;
end;
begin
Result:=false;
if not DirectoryExists(EDir) then Exit;
EDir:=EDir+"\*.*";
Index:=FindFirst(EDir,faAnyFile,SearchRec);
while Index=0 do
begin
if (SearchRec.Name=".") or (SearchRec.Name="..") then
begin
Index:=FindNext(SearchRec);
continue
end;
FileName:=ExtractFileDir(EDir)+"\"+SearchRec.Name;
if ExtractBit(5,SearchRec.Attr) {faDirectory} then
begin
EraseDir(FileName);
if not RemoveDirectory(pchar(FileName)) then
MessageDlg("Error deleting folder "+FileName,mtError,mbOK,0)
end
else
begin
LDel.Caption:="Удаление: "+FileName;
if not DeleteFile(FileName) then
MessageDlg("Невозможно удалить файл " + FileName,mtError,[mbOK],0)
else
begin
DelSize:=DelSize+SearchRec.Size;
Position:=Round((DelSize/Size)*100);
if Position<=100 then PBar.Position:=Position else PBar.Position:=100
end
end;
Index:=FindNext(SearchRec)
end;
FindClose(SearchRec);
Result:=true;
end;
← →
Skywalker (2002-09-19 13:16) [1]нашел в чем фишка - FindFirst меняет значение CurrentDir
в итоге, приложение не может удалить папку, потому что само ее открыло
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.09.30;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.008 c