Препроцессор Inno Setup: FindFirst

Прототип функции

int FindFirst(str Pattern, int Attrs)

Описание

Выполняет поиск файла в указанной папке согласно заданному имени (первый параметр) и атрибуту файла (второй параметр). Если файл найден, то возвращает его дескриптор, который должен быть использован в последующих вызовах функций FindGetFileName, FindNext и FindClose. В противном случае функция вернёт значение 0.

Параметр Pattern (str) устанавливает маску имени папки/файла, включая символы подстановки. Например, строка вида '.\*.*' определяет все файлы в текущем каталоге.

Параметр Attrs (int) устанавливает атрибут файлов, которые должны быть включены в поиск помимо обычных файлов. Выберите необходимый атрибут или соответствующую ему константу, которые определены в файле ISPPBuiltins.iss:

faReadOnly файлы только для чтения
faHidden скрытые файлы
faSysFile системные файлы
faVolumeID файлы ID-тома
faDirectory файлы каталога
faArchive архивные файлы
faSymLink файлы символьных ссылок
faAnyFile любые файлы

Атрибуты можно комбинировать между собой, используя логическую операцию "ИЛИ" как для значений, так и для констант. Например, для поиска также скрытых файлов и только для чтения, укажите в качестве второго параметра faReadOnly | faHidden.

Пример

[Files]
#define FindHandle
#define FindResult
#define Mask "*.pas"

#sub ProcessFoundFile
  #define FileName FindGetFileName(FindHandle)
  #if Copy(FileName, 1, 4) == "ispp"
    FileName: {#FileName}; DestDir: {app}\ispp
  #else
    FileName: {#FileName}; DestDir: {app}
  #endif
#endsub

#for {FindHandle = FindResult = FindFirst(Mask, 0); FindResult; \
      FindResult = FindNext(FindHandle)}
ProcessFoundFile
#if FindHandle
  #expr FindClose(FindHandle)
#endif

См. также:

define
sub
if