Не так вже й часто, але буває треба в програмі отримати список файлів або піддиректорій в каталозі. Для тих, хто використовує 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 - атрибути
Список методів і властивостей для роботи з цим об'єктом: