Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Удаление пустого каталога [D7, WinXP]


Bios_ ©   (2005-08-10 20:55:00) 

Я использую след. код:
SetFileAttr(DirName, faArchive);
RemoveDirectory(DirName) или RMDir(DirName);

В принципе он работает, но некоторые каталоги, как "не бейся",
не удаляются. Хотя DiscoComander с этим справляется.
Каталог точно пустой.
Кто нибудь знает в чем дело? Очень нужно!


Kazakh   (2005-08-11 10:22:00) [1]

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 файлы тоже будут удалены.


begin...end   (2005-08-10 21:08:00) [2]

> Bios_   (10.08.05 20:55)

> Кто нибудь знает в чем дело?

Об этом может сказать GetLastError, вызванный после неудачной попытки удаления с помощью RmDir или RemoveDirectory.


Наверх

Титульная страница Поиск, карта сайта Написать письмо