Иллюстрированный самоучитель по Turbo Pascal

Процедуры и функции для работы с файлами

Функция 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 – имя и расширение файла.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.