Navigation: Работа с переменными > DIRECTORY - Считать имена файлов директории в очередь |
![]() ![]() ![]() |
Считать имена файлов директории в очередь:
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