Урок 12 - створення списку файлів - delphi sources faq

Не так вже й часто, але буває треба в програмі отримати список файлів або піддиректорій в каталозі. Для тих, хто використовує KOL і MCK відкриваються аж 3 способи вирішення цієї проблеми. Правда нормальний, на мою думку, все-таки тільки один :) Розглянемо всі.

1-й спосіб. "Традиційний."

Традиційно користуються 3-ма API функціями: FindFirstFile (шукає перший файл зі списку файлів), FindNextFile (шукає наступний файл). FindClose (припинення пошуку). Зазвичай перші 2-е функції заменются їх VCL-сурогатами FindFirst, FindNext. Для нас, вони не зовсім прийнятні, так як для того щоб скористатися цими функціями, треба підключити бібліотеку Sysutils. А це як відомо додає зайвий жирок в наші атлетично складені програми :-). Приклад на чистому API з домішкою KOL.

Пояснення на рахунок атрибутів для шуканих файлів:

  • FILE_ATTRIBUTE_ARCHIVE - архівний файл.
  • FILE_ATTRIBUTE_COMPRESSED - стиснений файл або папка.
  • FILE_ATTRIBUTE_HIDDEN - прихований файл.
  • FILE_ATTRIBUTE_NORMAL - звичайний файл.
  • FILE_ATTRIBUTE_OFFLINE - дані файлу недоступні. Вказує, що дані файли були фізично переміщені.
  • FILE_ATTRIBUTE_READONLY - файл тільки для читання.
  • FILE_ATTRIBUTE_SYSTEM - системний файл.
  • FILE_ATTRIBUTE_TEMPORARY - тимчасовий файл.
  • FILE_ATTRIBUTE_DIRECTORY - директорія

2-й спосіб. "В лоб."

Незважаючи на простоту представленого коду цю операцію можна зробити ще простіше тому ListBox сам може показати файли в певній директорії. Для цього треба звернутися до властивості AddDirList. Приклад ще менше.

Це звичайно цікавий спосіб отримувати список файлів, але не функціональний :) Не створювати адже на вікні кожен раз ListBox або СomboBox (він теж має це ж властивість), щоб отримати список файлів. Та й чомусь виведений список файлів у вигляді "коротких імен" (тобто як ніби в DOS). Швидше за все Володимир Кладов додав це властивість як цікаву фічу і не більше.

3-й спосіб. " Як належно "

Ну і найцікавіше :) В KOL тобто об'єкт призначений для створення списку фалів. Це PDirList. Ось його конструктор:

DirPath - сканована директорія
Filter - фільтр для файлів або каталогів
Attr - атрибути

Список методів і властивостей для роботи з цим об'єктом: