Работа с ZX-Spectrum 1993 г.

Интерфейс диска «BETA». Глава 12-13. - массивы данных. Файлы с последовательным и произвольным доступом.


ГЛАВА 12

МАССИВЫ ДАННЫХ

Синтаксис команд чтения и записи в СОС для нетекстового массива с
заголовком "MONEY" выглядит так :

LOAD "MONEY" DATA МО или
SAVE "MONEY" DATA МО
для текстовых массивоа.добавляется $, например:

LOAD "MONEY" DATA М$()
Как большинство команд TR DOS, команды чтения и записи
синтаксически аналогичны командам СОС, но добавляется префикс и, воз-
можно, указатель дисковода. Маловероятно, что обращение к массивам дан-
ных будет осуществляться непосредственно из TR DOS. Природа массивов
данных такова, что они записываются и читаются из работающей программы.
Синтаксис, который должен быть использован в BASIC-программе, следу-
ющий:

RANDOMIZE USR 15619: REM: LOAD "MONEY" DATA MO
или

RANDOMIZE USR 15619: REM: SAVE "MONEY" DATA MO

ЗАМЕЧАНИЕ: этот синтаксис подразумевает, что Вы работаете с диско-
водом по умолчанию. Если у Вас двухдисковая система, то разумно предпо-
ложить, что диск с данными находится в одном и том же дисководе, скажем,
в В, в то время как диск с программой находится в дисководе по умолчанию
А. В этом случае следует пользоваться указателем дисковода:

RANDOMIZE USR 15619: REM: LOAD "B.MONEY" DATA MO
При копировании, стирании или переименовании файла данных команда
всегда должна заканчиваться указателем типа файла, то есть: DATA, иначе TR
DOS будет подразумевать Бейсик-файл:

COPY "A:MONEY", "B:MONEY" DATA

ГЛАВА 13

ФАЙЛЫ С ПОСЛЕДОВАТЕЛЬНЫМ И ПРОИЗВОЛЬНЫМ

ДОСТУПОМ

ОБЩИЕ СВЕДЕНИЯ

В предыдущей главе были рассмотрены обычные файлы. TR DOS под-
держивает еще два типа файлов - последовательные файлы и файлы с пря-
мым доступом. Для того, чтобы использовать файлы этих типов, вначале

необходимо открыть канал. SPECTRUM имеет 16 каналов. СОС использует
каналы с 0 по 3 для внутренних нужд, а каналы с 4 по 15 можно использовать
в TR DOS. Всякий раз, когда открывается канал для последовательного файла
или файла с прямым доступом, используется 336 байтов ОЗУ.

В файле данных могут храниться как числовые, так и текстовые перемен-
ные. Числовые переменные переводятся компьютером в текстовый вид. Тек-
стовая строка заканчивается возвратом каретки (ASCII код 13, вставляется
компьютером). В файле с последовательным доступом данные записываются
последовательно, как и на кассете. Чтобы считать строку, нужно начать с са-
мого начала файла. В файлах с прямым доступом данные хранятся в виде
записей. Любая из записей в таком файле может быть прочитана или записа-
на путем указания ее номера. Таким образом, доступ к последней записи
также быстр, как и к первой.

Все команды TR DOS для выбора дисковода, копирования, переимено-
вания и так далее так же хорошо работают и в применении к файлам с после-
довательным и прозвольным доступом. Единственным отличием является
индикатор типа файла "# "вместо CODE или DATA. Например:
COPY "В: PHONE"#, "A: PHONE"#
NEW "NEWFILE"#, "OLDFILE"#
ERASE "NAMES"*
Обращение к файлам с последовательным и произвольным доступом
редко происходит непосредственно из TR DOS. Таким образом, в примерах,
приведенных ниже, подразумевается, что обращение к файлам происходит
из программы на BASIC'e.

ПОСЛЕДОВАТЕЛЬНЫЕ ФАЙЛЫ

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

OPEN номер канала, "имя файла", W
Когда канал открыт, запись в файл производится командой PRINT:
10 LET DOS«15619

20 RANDOMIZE USR DOS: REM: OPEN 4, "TEST:, W
30 PRINT 4: "THIS IS A TEST LINE"
40 RANDOMIZE USR DOS: REM: CLOSE 4
Обратите внимание на использование переменной DOS вместо 15619 и
на то, что файл должен быть закрыт. Текст в строке 30 будет записан на диск
в файл с именем "TEST". Если файл не будет закрыт, данные будут потеряны.
Любой закрытый файл может быть повторно открыт для чтения, модификации
и последующей записи с другим именем. Для открывания файла использует-
ся синтаксис:

OPEN номер канала, "имя файла", R
После того, как открыт канал для чтения, ввод информации
производится ключевым словом INPUT:
10 LETDOS-15619

20 RANDOMIZE USR DOS: REM: OPEN 7, "TEST", R
30 INPUT 7;A$
Данные из файла TEST будут загружены в переменную AS.

ФАЙЛЫ С ПРОИЗВОЛЬНЫМ ДОСТУПОМ

Файл с произвольным доступом состоит из записей, нумеруемых от О
вверх. Длина записи (максимальная 254 байта) выбирается во время откры-
вания файла. Запись хранится в виде отдельной строки. Строка, длина кото-
рой меньше заявленной, записывается сдвинутои влево и заканчивается

возвратом каретки. Оставшиеся байты записи имеют неопределенное зна-
чение. Если строка длиннее, чем длина записи, то записывается число бай-
тов, равное длине записи, остальные байты игнорируются и возврат каретки
не вставляется. Когда файл с произвольным доступом открывается первый
раз, TR DOS резервирует под него 16 секторов (приблизительно 4 К). В слу-
чае превышения этого объема число секторов автоматически расширяется.
Файл с произвольным доступом открывается следующим образом:
OPEN номер канала, "имя 0aiuia"RND, длина записи
Для записи в файл используется следующий синтаксис:.

PRINT номер канала, номер записи, имя переменной.

Пример:

100 RANDOMIZE USR 15619: REM:
OPEN 8, "ADDRESS" RND, 100
150 PRINT 8;72,D$
Канал 8 был открыт для файла ADDRESS, в котором для каждой записи
было зарезервировано 100 байтов. Содержимое переменной D$ было зане-
сено в запись номер 72 этого файла. В отличие от последовательного файла,
файл с произвольным доступом, после того как он открыт, можно одновре-
менно читать и писать. Для чтения используется такой синтаксис:

INPUT номер канала; (номер записи), имя переменной

Пример:

100 RANDOMIZE USR 15619: REM: OPEN 12, "TEST 1 "RND, 20
110 PRINT 12;20, A$

570 INPUT 12; (15), Ay

990 RANDOMIZE USR 15619: REM: CLOUSE 12
995 END

U строке 570 содержимое записи номер 15 (помните, что это 16-я
запись) читается в переменную А$. Когда все операции с файлом закончены,
файл должен быть закрыт, как показано в строке 990. Содержимое будет
потеряно, если питание будет выключено до того, как канал был закрыт.
Запись может содержать более одной переменной. Программа должна со-
единить две строки перед записью. Аналогично, программа должна раз-
делить строку на две переменные послё прочтения такой записи.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
Программистам - Теория: Биты и байты.
EHOX - Рассказ "ENOX".
Заключение - авторы и т.д.
Обмен опытом - DIGITAL MUSEC + SCORPION - схемы подключения AY.
PartyZone! - "СПРЫГ-2К". проходить оно будет в Москве.

В этот день...   26 апреля