Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2008, 19:26   #1
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию Удаление папок

Подскажите как удалить все пустые папки внутри папки до конца Иеархии?
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 25.08.2008, 19:45   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

ну писал я когда-то такой код.
вот, пробуй:

Код:
program EmptyDirList;
{$APPTYPE CONSOLE}

uses SysUtils, Windows;

var
  IOCode        : integer;
  cDir0         : string;

function StrAnsiToOem(const S: AnsiString): AnsiString;
begin
  SetLength(Result, Length(S));
  AnsiToOemBuff(@S[1], @Result[1], Length(S));
end;

function FilesCountInScanDirectory( cDirName : string) : integer;
var
  lCountResult    : integer;
  SearchRec       : TSearchRec;
  isFound         : integer;
begin
  lCountResult := 0;
  isFound := FindFirst( cDirName+'\*.*', faAnyFile, SearchRec);
  while ( isFound = 0 ) do begin
     if (SearchRec.Attr and faDirectory)<>0 then begin
         if (Trim(SearchRec.Name)<>'.') and
              (Trim(SearchRec.Name)<>'..') then begin
           lCountResult := FilesCountInScanDirectory(
                             cDirName+'\'+SearchRec.Name) + lCountResult;
         end
       end
     else
       lCountResult := lCountResult + 1;
     isFound := FindNext(SearchRec)
  end;
  SysUtils.FindClose(SearchRec);
  Result := lCountResult;
  if lCountResult = 0 then begin
     WriteLn( 'NOW you can delete FOLDER - '+ strAnsiToOem(cDirName));
     {$I-}
     // убрать комментарий строки ниже, чтобы пустые папки УДАЛЯЛИСЬ!!!!!!
     //     RmDir(cDirName);  // ВНИМАНИЕ!! ПАПКИ УДАЛЯЮТСЯ данной командой!
     IOCode := IOResult;
     if IOCode <> 0 then
       WriteLn('Cannot remove directory ',strAnsiToOem(cDirName),' Error code:',IOCode)
     else
       WriteLn('Directory ', strAnsiToOem(cDirName), ' removed ');
     {$I+}
  end
end;

begin
  WriteLn('EmptyDirList v0.1 (c) Serge B_SA 2006');
  // директория, с которой нужно начинать просмотр дерева каталогов
  // можно брать, например, из командной строки cDir0 := ParamStr(1);
  cDir0 := 'C:\TESTIN2';
  // рекурсивно обойти дерово начиная с папки CDir0
  FilesCountInScanDirectory( cDir0 );
  WriteLn('Done.');
end.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.08.2008, 19:48   #3
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

Для одной ветки. Пойдём с конца, removedir позволяет удалять только пустые папки - этим и пользуемся
Код:
procedure TForm1.Button1Click(Sender: TObject);
var p:string;
begin
  P := 'c:\1\2\3\4\5';//конечный путь 
  if P[length(P)] <> '\' then P := P + '\';//добавим '\' если нету
  repeat
    P := ExtractFilePath(P);//вычислим родительскую папку
    Delete(P, length(P), 1)//удалим символ '\'
  until not removedir(P)
end;
eoln вне форума Ответить с цитированием
Старый 26.08.2008, 10:13   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Стоит попробовать удачять через SHFileOperation
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2008, 10:34   #5
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Serge_Bliznykov, спасибо, работает
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Дерево папок EdNovice Общие вопросы Delphi 2 26.08.2008 15:34
обзор папок Черничный Общие вопросы Delphi 14 14.08.2008 10:18
Создание - Удаление папок (директорий) Kocapb Общие вопросы C/C++ 5 20.12.2007 09:28
Microsoft Office Outlook : удаление папок в папке контакты bufer Софт 0 05.12.2007 16:58
Дерево папок Mikola PHP 6 24.11.2007 01:39