Вниз
Скачать: CL | DM;

Почему не удаляется?   Найти похожие ветки 

 
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 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.011 c
1-98107
antonioxxx
2002-09-20 01:22
2002.09.30
Имя ехе-файла


14-98327
NeyroSpace
2002-09-05 13:35
2002.09.30
---|Ветка была без названия|---


3-97993
ang
2002-09-09 14:01
2002.09.30
не могу найдти причину отказа SQL UPDATE ?


1-98053
qube
2002-09-19 10:59
2002.09.30
И опять идеологический вопрос


6-98247
c0pYc@t
2002-07-30 10:08
2002.09.30
ServerSocket1.Socket.Connectons




   Наверх