· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› RemoveDirectory - problem!!!?

Посл.отвђт Сообщенiе


Дата: Фев 11, 2003 23:22:26

собственно проблема такая -
имеется папка.
если её пробывать удалить через RemoveDirectory, то естественно она удаляется, НО стоит перед вызовом RemoveDirectory зделать FindFirstFileA... FindNextFileA... FindClose, то RemoveDirectory возвращает ошибку и папка Не удаляется.
подскажите, в чём дело?


Дата: Фев 12, 2003 05:16:53

Папка пустая?
FindClose возвращает TRUE?
Можете показать кусок кода?


Дата: Фев 12, 2003 15:59:54

да. папка пустая. ВСЕ вызовы проходят успешно, кроме RemoveDirectory
вот:
.
.
invoke FindFirstFile,addr Rbuff,addr fdata
mov hFND,eax
inc eax
jz endsrch
fnxt9:
invoke DeleteFile,addr fdata+44
invoke FindNextFile,hFND,addr fdata
or eax,eax
jz endsrch
jmp fnxt9
endsrch:
invoke FindClose,hFND
invoke RemoveDirectory,addr Rbuff2
.
.

собственно Find** вызывается для удаления файла. Если оно есть, то оно естественно удаляется. всё. , но папка остаётся.
если скажем RemoveDirectory пихнуть в начало этого куска, (при условии что папка пуста она удалиться, но если она также пуста но идёт поиск файла, то облом.) Вот ещё - вся процедура идёт в одном из трэдов процесса - подругому никак.


Дата: Фев 12, 2003 17:25:44

Новый вариант:
Удаляемая папка называется MYDIR и находится в текущем каталоге

.DATA
Rbuff db "*.*",0
DirF db "MYDIR",0
DirF2 db "..",0

.DATA?
fdata WIN32_FIND_DATA <>
hFND dd ?

.CODE
. . .
; Заходим в удаляемую папку (это важно!!!)
invoke SetCurrentDirectory,OFFSET DirF
invoke FindFirstFile,OFFSET Rbuff,OFFSET fdata
mov hFND,eax
inc eax
jz endsrch
; Пропускаем . и .. (первые результаты поиска FindNextFile)
invoke FindNextFile,hFND,OFFSET fdata
fnxt9:
invoke FindNextFile,hFND,OFFSET fdata
test eax,eax
jz endsrch
; Delete после Find!
invoke DeleteFile,OFFSET fdata+44
jmp fnxt9
endsrch:
invoke FindClose,hFND
; Выходим из удаляемой папки (это тож важно!!!)
invoke SetCurrentDirectory,OFFSET DirF2
invoke RemoveDirectory,OFFSET DirF
. . .

Вот и всё. Так должно работать.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.066