Процедуры и функции для работы с файлами
Функция DISKFREE (<диск>): LONGINT
Возвращает объем в байтах свободного пространства на указанном диске. При обращении к функции выражение <диск> типа BYTE определяет номер диска: 0 – устройство по умолчанию, 1 – диск А, 2 – диск В и т.д. Функция возвращает значение – 1, если указан номер несуществующего диска.
Функция DISKSIZE (<диск>): LONGINT
Возвращает полный объем диска в байтах или -1, если указан номер несуществующего диска.
Процедура FINDFIRST
Возвращает атрибуты первого из файлов, зарегистрированных в указанном каталоге. Формат обращения:
FINDFIRST (<маска>, <атрибуты>, <имя>)
Здесь:
- <маска> – строковое выражение, содержащее маску файла;
- <атрибуты> – выражение типа BYTE, содержащее уточнение к маске (атрибуты);
- <имя> – переменная типа SEARCHREC, в которой будет возвращено имя файла.
При формировании маски файла используются следующие символы-заменители ДОС:
- * означает, что на месте этого символа может стоять сколько угодно (в том числе ноль) разрешенных символов имени или расширения файла;
- ? означает, что на месте этого символа может стоять один из разрешенных символов.
Например:
- *. * выбирает все файлы из каталога;
- с*. * выбирает все файлы с именами, начинающимися на с (c1.pas, с.012345, c.dat и т.д.);
- a?.dat выбирает имена файлов типа a0.dat, az.dat и т.д.
Маске может предшествовать путь. Например, команда:
с:\dir\subdir\*.pas
Означает выбирать все файлы с расширением .PAS из каталога SUBDIR, находящегося на диске С; каталог SUBDIR зарегистрирован в каталоге верхнего уровня DIR, который, в свою очередь, входит в корневой каталог.
Байт <атрибуты> содержит двоичные разряды (биты), уточняющие, к каким именно файлам разрешен доступ при обращении к процедуре FINDFIRST. Вот как объявляются файловые атрибуты в модуле DOS.TPU:
const Readonly = $01; {только чтение} Hidden = $02; {скрытый файл} SysFile = $04; {системный файл} VolumeID = $08; {идентификатор тома} Directory = $10; {имя подкаталога} Archive =$20; {архивный файл} AnyFile= $3F; {любой файл}
Комбинацией бит в этом байте можно указывать самые разные варианты, например $ 06 – выбирать все скрытые и/или системные файлы.
Результат работы процедуры FINDFIRST возвращается в переменной типа SEARCHREC. Этот тип в модуле DOS.TPU определяется следующим образом:
type SearchRec = record Fill: array [1..21] of Byte; Attr: Byte; Time: LongInt; Size: LongInt; Name: String.[12] end;
Здесь:
- Attr – атрибуты файла (см. выше);
- Time – время создания или последнего обновления файла; возвращается в упакованном формате; распаковать параметр можно процедурой UNPACKTIME (см.ниже);
- Size – длина файла в байтах;
- Name – имя и расширение файла.