Описание структуры записи располагается между служебными словами TYPE — END TYPE. В профамме 7_03.bas через qq обозначено наименование шаблона записи, состоящей из трех полей с именами а (6-байтовое символьное поле), п (2-байтовое поле для хранения короткого числа) и г (4-байтовое поле для хранения короткого вещественного числа). С помощью оператора DIM объявлена структурированная переменная ь типа qq, содержащая три поля с именами b.а, b.n и b.r. Каждому из этих полей можно присвоить соответствующее значение и вывести запись ь в дисковый файл:
PUT #l,,b 'Вывод значения b в текущую запись
PUT #l,5,b 'Вывод значения b в запись с номером 5
Отсчет записей в файле ведется от 1. Поскольку имеется возможность вывести значение структуры в любое место записеориентированного файла, то его инициализация производится следующим образом:
OPEN "bas_rec" FOR RANDOM AS #1 LEN=12
Последнее указание (LEN=12) задает длину записи в байтах, и естественно, что она должна быть равна суммарной длине всех полей структур, участвующих в обмене.
Программа 7_03.bas формирует в цикле значения полей записи ь и выводит их на диск последовательно, а затем в цикле считывает эти записи в обратном порядке, демонстрируя тем самым произвольный доступ к записям.
Программа 7_03.bas
CLS TYPE qq
a AS STRING *6
n AS INTEGER
r AS SINGLE END TYPE DIM b AS qq b.а="Строка"
OPEN "bas_rec" FOR RANDOM AS §1 LEN=12
FOR J%=1 TO 10
b.n=J% : b.r=SQR(J%)
PUT #l,,b
PRINT b.a,b.n,b.r NEXT J% CLOSE #1
OPEN "bas_rec" FOR RANDOM AS #1
FOR J%=10 TO 1 STEP -1
GET #l,J%,b
PRINT b.a,b.n,b.r
NEXT J%
CLOSE #1
END
Двоичные файлы в системе QBasic
В двоичных файлах может храниться информация любого происхождения и рассматривается она только как последовательность байтов, пронумерованная от 1. Открываются двоичные файлы следующим образом:
OPEN имя_файла FOR BINARY AS #k
Доступ к данным в двоичном файле производится с помощью операторов PUT (вывод в файл) и GET (чтение из файла). При этом второй параметр в этих операторах обозначает номер байта дискового файла, с которого начинается обмен. Количество байтов, участвующих в обмене, определяется длиной третьего аргумента. С двоичным файлом можно работать, используя как последовательный (второй аргумент в операторах GET/PUT опущен), так и прямой (произвольный) доступ.