Navigation:  Работа с переменными >

DIRECTORY - Считать имена файлов директории в очередь

Previous pageReturn to chapter overviewNext page

Считать имена файлов директории в очередь:

 directory qname attr1,attr2,... path

  qname  - имя очереди

  attr1,attr2,...  - аттрибуты, перечисленные через запятую (без пробелов)

  path  - путь с маской (Маска может включать символы шаблона * и ? )

 

Процедура DIRECTORY возвращает список всех файлов в каталоге, указанном параметром путь, и имеющих соответствующие параметру атрибуты в указанной очереди.

 

Параметр очередь должен представлять собой очередь, начало структуры которой совпадает со следующей структурой, находящейся в файле EQUATES.CLW:.

ff_:queue  QUEUE,PRE(ff_)

name        STRING(13)

date        LONG

time        LONG

size        LONG

attrib      BYTE                      !Битовая карта, такая же как атрибуты EQUATE

         END

или следующей структурой (для поддержки длинных имен файлов):

FILE:queue QUEUE,PRE(File)

name        STRING(FILE:MAXFILENAME)  !FILE:MAXFILENAME в EQUATE

shortname   STRING(13)

date        LONG

time        LONG

size        LONG

attrib      BYTE                      !Битовая карта, такая же как атрибуты EQUATE

         END

 

В вашей очереди может быть больше полей, но начинаться она должна с этих полей. В них будет занесены данные о каждом файле в каталоге (параметр путь), имеющим указанные атрибуты. Поля date и time будут содержать стандартную в Clarion дату и время (преобразование из внутреннего формата операционной системы производится автоматически).

 

Атрибуты должны перечисляться через запятую, пробелов между атрибутами быть не должно!

 

В поле очереди атрибуты (attrib) имеет самостоятельное значение каждый бит, и они указывают, имена каких файлов отбираются в очередь. В файле EQUATES.CLW содержатся следующие мнемонические соответствия:

ff_:NORMAL    EQUATE(0)       !Всегда активен

ff_:READONLY  EQUATE(1)       !Не для использования как параметр атрибута

ff_:HIDDEN    EQUATE(2)

ff_:SYSTEM    EQUATE(4)

ff_:DIRECTORY EQUATE(10H)

ff_:ARCHIVE   EQUATE(20H)     ! не совместим с Windows 95

 

Битовый массив атрибутов используется как фильтр с независимыми компонентами: если складывать числа, представленные мнемоническимми именами соответствия, то вы будете получать список файлов с любыми, заданными атрибутами. Это означает, что когда устанавливается просто атрибут ff_:NORMAL, то в результате выбираются только файлы (подкаталоги не выбираются), не имеющие атрибутов «скрытый файл», «системный файл» или атрибута «архивный». Если к ff_:NORMAL прибавить атрибут ff_:DIRECTORY, то будут выбраны все файлы И подкаталоги данного каталога (параметр путь). Пока ff_:NORMAL  равен нулю (0), вы всегда получите файлы.

 

Пример:

DEFINE DATA

FILE:queue QUEUE,PRE(File)

name        STRING(102)

shortname   STRING(13)

date        DATE(@D06-B),ALIGN(R)

time        TIME

size        LONG(@N10B),ALIGN(R)

attrib      BYTE                      !A bitmap, the same as the attributes EQUATEs

          END

ENDDEFINE

 

directory FILE:queue ff_:DIRECTORY C:\*.*

setlistboxformat ?List FILE:queue

 

 

См. также: DEFINE DATA, PUTQUE, GETQUE, ADDQUE, DELETEQUE, FREEQUE, SORTQUE