Нова російськомовна пошукова система "Іван Сусанін"
Чи не правда, знайома ситуація? Необхідно зробити так, щоб програма шукала будь-якої файл. Все, добре, якщо у Вас для цього є спеціальна компонента (до речі, яка не входить в стандартний набір). А якщо її немає? Тут доведеться писати алгоритм пошуку файлу.
У Delphi існує дві функції для пошуку файлів. це:
Розберемося, що ж означають ці функції. Для початку візьмемо першу - FindFirst. Розберемося спочатку з перемінними.
Path Це змінна, як видно з назви, що показує шлях до директорії, де буде проводитися пошук файлу. Крім цього, в цю змінну входить також і ім'я файлу (файлів), які повинні бути знайдені. Причому, в назві файлу можна користуватися такими символами: * (зірочка) і. (знак питання). Значення цих символів стандартні: знак питання - будь-який допустимий символ, зірочка - комбінація будь-яких допустимих символів. Під допустимими символами я розумію символи, які можуть використовуватися в операційній системі для позначення імен файлів.
Приклад використання змінної Path:
Зверніть увагу: Неприпустимо використовувати символи * і. в назві директорії. Ці символи можуть використовуватися тільки в імені файлу.
Attr Мінлива задає тип файлів, які будуть знайдені. Тип змінної - Integer. Щоб не мучитися з запам'ятовуванням цифр, рекомендую Вам запам'ятати такі слова:- faReadOnly - файли, у яких встановлено атрибут "Тільки для читання".
- faHidden - файли, у яких встановлено атрибут "Приховані".
- faSysFile - файли, у яких встановлено атрибут "Системний".
- faArchive - файли, у яких встановлено атрибут "Архівний".
- faDirectory - директорія. Тобто пошук піддиректорій в директорії.
- faAnyFile - будь-який файл (в тому числі і faDirectory, і faVolumeID).
Тепер з цими словами можна звертатися як з цифрами - складати їх і віднімати. наприклад:
Однак майте на увазі: При застосуванні вирахування результат може вийти трохи несподіваним, тому їм краще не зловживати.
Тепер розберемося, що ж видає функція. Функція повертає 0, якщо була виконана успішно, або, в іншому випадку, код помилки. Крім того, якщо функція знайшла файл, що задовольняє і умов змінної Path, і умов змінної Attr, то вона записує результат в змінну F (типу TSearchRec), яка, природно, має бути визнана командою Var.
Тип TSearchRec можна уявити як:
Тепер розберемося, що означає функція FindNext.
Якщо команда FindFirst знайшла якийсь файл, то, можливо, якщо ім'я файлу задано з символами * і / або. є ще один або кілька файлів, що задовольняють умові пошуку. В цьому випадку і використовується команда FindNext. Функція також повертає 0, якщо була виконана успішно, або, в іншому випадку, код помилки. І також записує дані в змінну F.
Тепер, знаючи ці дві команди, можна скласти і алгоритм пошуку заданого файлу.
Зверніть увагу на процедуру FindClose. Вона звільняє пам'ять, яку зайняли функції FindFirst і FindNext.