  Функции С и C++, библиотек C++Builder, API Windows________________867

{

SetCurrentDir(sr.Name);

ButtonlClick(Sender) ;

SetCurrentDir(CurDir) ;

1
}
I
FindClose(sr);

}

Приведенная функция использует рекурсивный вызов самой себя при перехо-
де в подкаталоги.

Альтернативный вариант поиска файлов, удовлетворяющих шаблону, предо-
ставляют функции findfirst и findnext. Они используют для хранения информации
о файле структуру типа ffblk:

struct ffblk {

long           ff_reserved;

long           ff fsize;       // размер файла
unsigned long ff_attrib;      // атрибуты
unsigned short ff_ftime;       // время создания
unsigned short ff_fdate;       // дата создания
char           ff name[256];   // имя файла

Поле атрибутов ff_attrib в этой структуре формируется из констант FA_.„,
определенных в файле dos.h и рассмотренных в разделе 14.12.1. Поля ff_ftime и
ff_fdate содержат битовые поля даты и времени. В поле ff_ftime биты 0 — 4 хра-
нят пары секунд, биты 5 — 10 хранят минуты, биты 11 — 15 — часы. В поле
ff_fdate биты 0 — 4 хранят день, биты 5 — 8 — месяц, биты 9 — 15 — год, отсчи-
тываемый от 1980.

Сам по себе поиск, осуществляемый функциями findfirst и findnext, не отли-
чается от рассмотренного выше для функций FindFirst и FindNext.

Функция FileSearch ищет в списке каталогов DirList файл Name. Список Dir-
List представляет собой перечень обычным образом записанных путей к катало-
гам, разделенных точками с запятой. При успешном поиске функция возвращает
имя файла с полным путем к нему (если файл найден в текущем каталоге, возвра-
щается только имя файла). Если файл не найден, возвращается пустая строка.

Функция searchpath ищет файл file в списке каталогов, указанных в перемен-
ной окружения PATH. Возвращает полный путь к файлу или NULL.

Функция FileExists определяет, существует ли указанный файл.

Функция fnmerge формирует строку path пути к файлу из его отдельных со-
ставляющих: диска drive, каталога dir, имени файла name и расширения ext. В
итоге получается строка вида drive:\path\name.ext. Каждая из составляющих
пути (dir, path, name, ext) может быть задана равной NULL. Тогда эта составляю-
щая в результирующий путь не включается. Функция fnsplit осуществляет обрат-
ную операцию: разделяет полный путь к файлу на его составляющие.

Функция DirectoryExists определяет, существует ли каталог Name. Если
Name содержит полный путь, то проверяется наличие именно указанного катало-
га. В противном случае Name воспринимается как путь относительно текущего ка-
талога.

Функции CreateDir и ForceDirectories создают переданный им как параметр
каталог Dir. Функция ForceDirectories отличается от других подобных функций
тем, что она может создать не только конечный каталог, но одновременно и его ро-
дительские каталоги, если они отсутствуют. Например, оператор

ForceDirectories("С:\\Test\\Testl")

28*