Назад на содержание Работа с файлами в Basic


Общая информация

Файлы последовательного доступа

Файлы прямого доступа

Пример

Контрольные вопросы

Задания


Файлы прямого доступа

    Файл прямого доступа состоит из записей, доступ к которым возможен в произвольном порядке по номеру записи.
Создание файла прямого доступа включает следующие шаги:

  • открытие файла (оператор OPEN);
  • задание структуры записи файла, или разметка буфера (оператор FIELD);
  • передача записи в буфер (операторы LSET или RSET);
  • пересылка содержимого буфера в файл (оператор PUT), при этом если номер записи в операторе PUT не указан явно, буфер помещается на место текущей записи, при открытии файла указатель текущей записи равен 1, после каждой операции ввода или вывода указатель сдвигается на следующую запись;
  • закрытие файла (оператор CLOSE).

    Записи передаются в виде строк символов. Поэтому необходимо использовать соответствующие функции преобразования данных в строку символов и обратно.
Ниже перечислены функции и осуществляемые ими преобразования.

    MKI$ (MKL$) - целое (длинное целое) в 2-х (4-х) байтовую строку;

    MKS$ (MKD$) - вещественное (вещественное двойной точности) в 4-х (8-ми) байтовую строку.

    CVI(CVL) - 2-х (4-х) байтовую строку в целое (длинное целое);

    CVS(CVD) - 4-x (8-ми) байтовую строку в вещественное (вещественное двойной точности).

Считывание из файла прямого доступа включает также пять шагов:

  • открытие файла;
  • разметка буфера;
  • передача записи из файла в буфер (оператор GET);
  • обработка данных буфера (переменные буфера доступны из программы);
  • закрытие файла.

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



Оператор OPEN - имеет вид
OPEN имя файла AS # номер файла LEN = длина записи (отсутствие указания режима ввода или вывода означает, что файл прямого доступа).

Оператор FIELD - имеет вид
FIELD # номер файла ,n1 AS имя1 [, n2 AS имя2, ...],
где n1, n2, ... - длина поля в байтах под переменные имя1, имя2, ... ( имя1, имя2, - символьные переменные ).

Операторы LSET, RSET - имеют вид
LSET имя = символьное выражение
RSET имя = символьное выражение
Оператор LSET (RSET) заполняет одно поле записи в буфере (оператор LSET - с начала, RSET - с конца, оставшиеся позиции заполняются пробелами).

Оператор PUT - имеет вид
PUT #номер файла [, номер записи]
Этот оператор передает содержимое буфера в файл на место записи с указанным номером (или текущей, если номер не указан).

Оператор GET - имеет вид
GET #номер файла [, номер записи]
Этот оператор передает содержимое записи с указанным номером в буфер (если номера нет, передается текущая запись).

В начало
Hosted by uCoz