Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-98002
Kurt
2002-09-10 11:40
2002.09.30
Как в CtrlGrid-е отловить событие вставки записи. Ну то есть пере


14-98274
PUNKER
2002-07-30 23:34
2002.09.30
Помогите с DELPHI !!!!!!!!!!!!


7-98361
ReimerMV
2002-07-17 17:14
2002.09.30
Написание Soft Cooler-а


1-98036
France
2002-09-18 22:45
2002.09.30
TStringGrid


1-98180
liho26
2002-09-17 10:41
2002.09.30
Установка компонент в D-7





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский