Полезное для программистов:

Фриланс
Новости
Статьи
   
Рубрики:

Error. Page cannot be displayed. Please contact your service provider for more details. (15)


Рекурсивный просмотр директорий

Поиск:
Код
//
// "рыба" для рекурсивного просмотра и обработки каталога 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;
Автор: Сысоев Александр






Просмотров: 8412

 

 

Новые статьи:


Популярные:
  1. Как сделать цикличным проигрывание MIDI-файла?
  2. Создание AVI файла из рисунков
  3. Как устройство "отключить в данной конфигурации"?
  4. Kто в данный момент присоединен через Сеть?
  5. Как узнать количество доступной памяти?
  6. Как реализовать в RichEdit разноцветный текст?
  7. Как скрыть свое приложение от ProcessViewer
  8. Как программно нажать/скрыть/показ кнопку "Start"?
  9. Модуль работы с ресурсами в PE файлах
10. Функции вызова диалоговых окон выбора
11. Проверка граматики средствами Word'а из Delphi.
12. Модуль для упрощенного вызова сообщений
13. Функции для записи и чтение своих данных в, ЕХЕ- файле
14. Рекурсивный просмотр директорий
15. Network Traffic Monitor
16. Разные модули
17. Универсальная функция для обращения к любым экспортируем функциям DLL
18. Библиотека от VladS
19. Протектор для UPX'а
20. Еще об ICQ, сообщения по контакт листу?
21. Использование открытых интерфейсов
22. Теория и практика использования RTTI
23. Работа с TApplication
24. Примеры использования Drag and Drop для различных визуальных компонентов
25. Что такое порт? Правила для работы с портами
26. Симфония на клавиатуре
27. Загрузка DLL
28. Исправление автоинкремента
29. Взаимодействие с чужими окнами
30. Проверить дубляжи в столбце


 

 

 
 
На главную