Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсивный просмотр директорий 
:(
    Опции темы
Alex
Дата 21.10.2004, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 4147
Регистрация: 25.3.2002
Где: Москва

Репутация: 80
Всего: 162



Код
//
// "рыба" для рекурсивного просмотра и обработки каталога DirName
// с подкаталогами. DirName ДОЛЖЕН завершаться '\'
//
procedure ScanDirsTemplate(const DirName :String);
var
  h   :tHandle;
  wfd :tWin32FindData;
begin
  // ... DirOnlyPreProcessing(DirName)
  h := Windows.FindFirstFile(PChar(DirName+'*.*'), wfd);
  try
    if  h <> INVALID_HANDLE_VALUE  then begin
      repeat
        if  (wfd.cFileName <> String('.')) and (wfd.cFileName <> '..')  then begin
          // ... FileAndDirProcessing(DirName+wfd.cFileName)
          if  (wfd.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) <> 0  then begin
            // ... DirOnlyProcessing(DirName+wfd.cFileName)
            //if  IncludeSubDirs  then
            ScanDirsTemplate(Slash(DirName+wfd.cFileName)); 
            end
          else begin
            // ... FileOnlyProcessing(DirName+wfd.cFileName)
          end;
        end;
      until  not Windows.FindNextFile(h,wfd);
    end;
    // проверка кода ошибки и FindFirstFile и FindNextFile
    case  GetLastError  of
      ERROR_NO_MORE_FILES,    // больше нет файлов и каталогов удовлетворяющих маске (но были)
      ERROR_FILE_NOT_FOUND,   // вообще нет файлов и каталогов удовлетворяющих маске
      ERROR_SHARING_VIOLATION // возникает во время создания каталога (уже создан но еще недоступен)
                            :; // ничего не делаем, все Ok
      else // все остальные ошибки
        raise Exception.CreateFmt('Ошибка просмотра каталога "%s": %s',[DirName,SysErrorMessage(GetLastError)]);
    end;
  finally
    if  h <> INVALID_HANDLE_VALUE  then Windows.FindClose(h);
  end;
  // ... DirOnlyPostProcessing(DirName)
end;



--------------------
Написать можно все - главное четко представлять, что ты хочешь получить в конце. 
PM Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 23 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.