Форум: "WinAPI";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
ВнизУдаление пустого каталога Найти похожие ветки
← →
Bios_ (2005-08-10 20:55) [0]Я использую след. код:
SetFileAttr(DirName, faArchive);
RemoveDirectory(DirName) или RMDir(DirName);
В принципе он работает, но некоторые каталоги, как "не бейся",
не удаляются. Хотя DiscoComander с этим справляется.
Каталог точно пустой.
Кто нибудь знает в чем дело? Очень нужно!
← →
begin...end © (2005-08-10 21:08) [1]> Bios_ (10.08.05 20:55)
> Кто нибудь знает в чем дело?
Об этом может сказать GetLastError, вызванный после неудачной попытки удаления с помощью RmDir или RemoveDirectory.
← →
Kazakh (2005-08-11 10:22) [2]function MyRemoveDir(sDir : string) : Boolean;
var
iIndex: Integer;
SearchRec: TSearchRec;
sFileName: string;
begin
Result := False;
sDir := sDir + "\*.*";
iIndex := FindFirst(sDir, faAnyFile, SearchRec);
while iIndex = 0 do
begin
sFileName := ExtractFileDir(sDir)+"\"+SearchRec.name;
if SearchRec.Attr = faDirectory then
begin
if (SearchRec.name <> "" ) and (SearchRec.name <> ".") and
(SearchRec.name <> "..") then
MyRemoveDir(sFileName);
end
else
begin
if SearchRec.Attr <> faArchive then
FileSetAttr(sFileName, faArchive);
if not DeleteFile(sFileName) then
ShowMessage("Could NOT delete " + sFileName);
end;
iIndex := FindNext(SearchRec);
end;
FindClose(SearchRec);
RemoveDir(ExtractFileDir(sDir));
Result := True;
end;
// ***************************** //
// Пример: //
// ***************************** //
if not MyRemoveDir("D:\myDir") then
ShowMessage("Can NOT delete dir");
// Кстати, системные, скрытые и
// read-only файлы тоже будут удалены.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.10.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.012 c