Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Последовательный файл состоит из записей, доступ к которым осуществляется последовательно, т.е. n-я запись следует за (n - 1)-ой как при формировании файла, так и при считывании из него.
Создание последовательного файла включает следующие шаги: открытие файла (оператор OPEN), вывод данных в файл (операторы PRINT#, WRITE#, или PRINT# USING) и закрытие файла (оператор CLOSE).
Считывание из последовательного файла включает следующие шаги: открытие файла, ввод данных из файла (операторы INPUT#, INPUT$, LINE INPUT#), закрытие файла.
Оператор OPEN подготавливает файл для чтения из файла (INPUT) или записи в файл (OUTPUT, если создается новый файл, APPEND, если добавляются записи в уже существующий файл).
INPUT
OPEN имя файла FOR OUTPUT AS # номер файла
APPEND
Оператор CLOSE закрывает файл, т.е. делает невозможным чтение или запись. CLOSE [# номер файла ]
Оператор CLOSE без параметров закрывает все открытые файлы. Единицей информации, которая передается при записи в файл или чтении из файла, является запись (логическая запись). Запись делится на поля. Каждое поле связано с одним элементом данных.
Могут быть созданы два типа последовательных файлов:
1) с разделителями полей, когда каждое поле автоматически отделяется специальным символом (например, запятой). Для создания такого файла используется оператор WRITE#, для чтения из него ‑ оператор INPUT#.
Данные в файле хранятся в таком виде, как если бы они набирались на клавиатуре при выполнении оператора INPUT, т.е. разделены запятыми и каждая запись заканчивается переводом строки. Оператор INPUT # имеет вид
INPUT # номер файла, список переменных
где переменные в списке по типу должны соответствовать данным в файле.
2) поля не разделены, и каждая запись точно такая же, как если бы эти данные отображались на экране или печатались на принтере. Для создания такого файла используется оператор PRINT#, для чтения из него ‑ операторы INPUT$ или LINE INPUT#.
Оператор INPUT$ передает из файла сразу всю строку (запись) указанной длины n в символьную переменную, например, ST$
ST$ = INPUT$ (n, # номер файла)
Оператор LINE INPUT# передает в указанную переменную ST$ всю строку независимо от ее длины
LINE INPUT # номер файла,
ST$
Пример (с разделителями полей):
OPEN "SEQU.DAT" FOR OUTPUT AS #1
ST$ = " ИВАНОВ "
INT% = 1972
FLOT! = 75.3
'теперь записываем строку в файл
WRITE #1, ST$, INT%, FLOT!
ST$ = " ПЕТРОВ "
INT% = 1975
FLOT! = 62.5
'записываем другую строку в файл
WRITE #1, INT%, ST$, FLOT!
CLOSE #1
END
Созданный файл будет следующим
" ИВАНОВ ", 1972, 75.3
1975, " ПЕТРОВ ", 62.5
Следующая программа читает из этого файла:
OPEN "SEQU.DAT" FOR INPUT AS #1
ST$ = " "
INT% = 0
FLOT! = 0
'теперь читаем строку текста из файла
INPUT #1, ST$, INT%, FLOT!
PRINT ST$, INT%, FLOT!
ST$ = " "
INT% = 0
FLOT! = 0
'читаем другую строку
INPUT #1, INT%, ST$, FLOT!
PRINT INT%, ST$, FLOT!
CLOSE #1
END
Пример (без разделителей полей):
OPEN "SEQUEN.DAT" FOR OUTPUT AS #1
ST$ = " ИВАНОВ "
INT% = 1972
FLOT! = 73.1
'записываем строку текста в файл
PRINT #1, ST$, INT%, FLOT!
ST$ = " ПЕТРОВ "
INT% = 1975
FLOT! = 64.3
'запишем другую строку, используя оператор
PRINT #1, USING "+####$#.##^^^^"; INT%, ST$, FLOT!
CLOSE #1
END
Содержание созданного файла будет таким:
ИВАНОВ 1972 73.1
1975 ПЕТРОВ 6.43Е+01
Следующая программа читает из этого файла:
OPEN "SEQUEN.DAT" FOR INPUT AS #1
ST$ = " "
ST$ = INPUT$ (80,#1)
PRINT ST$
LINE INPUT #1, ST$
PRINT ST$
CLOSE #1
END
Дата публикования: 2014-12-28; Прочитано: 185 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!