Код:
12.2. ФАЙЛЫ ПОСЛЕДОВАТЕЛЬНОГО ДОСТУПА
Последовательный файл может быть открыт для записи или считывания.
Синтаксис для открытия файла следующий:
OPEN STREAM NUMBERS-FILENAME",W
Когда поток открыт для записи, ключевое слово программы BASIC PRINT исполь-
зуется для записи данных в этот поток. Например:
10 LET DOS-15619
20 RANDOMIZE USR DOS:REM:OREN #4,"TEST",W
30 PRINT#4;"THIS 1$ A TEST LINE"
40 RANDOMIZE USR DOS:REM:CLOSE #4
Обратите внимание на "DOS" вместо печати в "15619" и закрытия файла. Цепочка
в строке 30 будет записана в файле "TEST" на диске. Если бы файл не был закрыт,
данные были бы потеряны. Любой закрытый файл может быть повторно открыт для
дальнейшей операции запись с помощью считывания, изменения и повторной записи
под новым названием.
Синтаксис для чтения открытого файла:
OPEN STREAM NUMRER,"FILENAME,,,R
При открытом потоке для READ используется ключевое слово SOS INPUT для
считывания данных из этого потока, например:
10 LET DOS-15619
20 RANDOMIZE USR DOS:REM:OPEN #7,"TEST",R
30 INPUT #7;A$
12.3. ФАЙЛЫ ПРЯМГО ДОСТУПА
Файл с произвольным доступом - это файл данных, который содержит некоторое
количество записей, пронумерованных от 0 и выше. Длина записей (макс.254 байта
каждая) выбирается и распределяется при первом открытии файла. Запись хранится
в виде отдельной строки. Любая строка, д лина которой меньше длины распределенной
записи, записывается, выравнивается слева и завершается с помощью возврата карет-
ки (ASCII CODE 13). Оставшиеся байты записи теряются. Любая строка, длина
которой больше длины записи, будет усечена до распределенной длины и записана
без возврата каретки^
Когда файл произвольного доступа впервые открывается, TRDOS распределяет 16
секторов (примерно 4К) в этот файл. Он будет автоматически расширяться, если
длина файла превысит 4К.
Для открытия файла произвольного доступа используется следующий синтаксис:
OPEN STREAM-NUMBER,"FILENAME"RND,RECORD-LENGTH
Для произведения записи в файл существует следующий синтаксис команды (пре-
фикс RANDOMIZE не требуется для распечатки и ввода: PRINT и INPUT):
PRINT STREAM-NUMBER;RECORD-NUMBER,VARIABLE-NAME
Например:
100 RANDOMZE USR 15619:REM:OPEN #8,"ADDRESS"RND,100
150 PRINT #8;72,D$
Поток 8 был открыт для файла "ADDRESS", в котором под каждую запись назна-
чено 100 байтов. Содержание D$ было помещено в запись номер 72 этого файла.
В отличие от последовательного файла, в этом случае можно считывать файл и
делать в него запись, когда файл открыт. Для считывания записи из файла использу-
ется следующий синтаксис команд:
INPUT STREAM-NUMBER;(RECORD-NUMBER),VARIABLE-NAME
Например:
100 RANDOMIZE USR 15619:REM:OPEN #12,"TEST"RND,20
110 PRINT # 12,20, A$
570 INPUT # 12; (15), A$
•
990 RANDOMIZE USR 15619:REM:CLOSE #12
999 END
В строке 570 считывается запись с номером записи 15 (помните, что это 16-я
запись) и загружается в переменную А$. Когда все операции с файлом закончены,
поток необходимо закрыть, как указано в строке 990. Если электроэнергия будет
отключена до закрытия потока, то содержание будет утрачено. Одна запись может
содержать более одной переменной. Программа должна связать вместе цепочки этих
переменных для произведения операций записи. Таким же образом программа дол-
жна разбить цепочку после операции чтения, если данные должны быть снова разде-
лены на отдельные переменные.
[COLOR="Silver"]