Большинство программ работает с данными, которые можно вводить с клавиатуры и выводить на экран, или с данными, хранящимися в каких-либо файлах на дискетах или жестких дисках. Рассмотрим некоторые основные понятия. Прежде всего следует выяснить, что собственно понимают под словом "файл". Это понятие можно определить так: файл — это область на носителе информации, где хранятся некоторые данные. Правда это определение слишком обобщенное, так как, следуя такому определению, файлами можно назвать и такие вещи как:
· Телефонный справочник (носитель - бумага)
· Ящик картотеки (носитель - бумага)
· Сведения об адресах на жестком диске (носитель - жесткий диск).
Нас будут интересовать лишь такие файлы, хранящиеся на носителях, которые можно обрабатывать программами QBASIC. Вернемся к картотеке. В картотечном ящике, как правило, находится некоторое количество карточек, в противном случае — картотека пуста. Если к картотеке применить понятие файла, то может возникнуть ситуация, когда файл окажется пустым. Однако файл существует, в нем только нет информации. Отдельные карточки картотеки называются записями. Так же, как карточки в ящике картотеки, записи в файле расположены последовательно: есть первая запись файла и последняя. На отдельной карточке картотеки или в отдельной записи может храниться всевозможная информация (например, фамилия, адрес, возраст,...). Эта информация называется полем данных. Объединение отдельных полей составляет логическое целое — запись или предложение файла. Прежде чем создавать или обрабатывать файлы в программе, следует позаботится о том, чтобы нужная информация запоминалась в предложении файла.
В этой главе попробуем создать небольшой адресный справочник, в котором будут следующие поля данных:
· Имя (30 позиций)
· Фамилия (30 позиций)
· Улица (30 позиций)
· Почтовый индекс (6 позиций)
· Местность (30 позиций)
· Телефон (16 позиций)
· Заглавие (30 позиций)
Чтобы ввести данные в справочник, необходимо сначала открыть файл данных. Для этого используется оператор OPEN в следующем формате: OPEN Имя_фаила FOR Режим_работы AS #Номер_файла
Имя_фаила- Имя файла с расширением и маршрутом Режим_работы - Устанавливает разрешенный режим доступа к данным, хранящимся в файле. APPEND: файл открывается для записи, причем новые предложения записываются в конец файла. INPUT: файл открывается для чтения. OUTPUT: файл открывается для записи, причем если файла не существует, то создается новый, а если существует, то ранее существовавшая там информация будет уничтожена, а новая будет записана в начало. RANDOM: файл состоит из записей фиксированной длины и открыт как для записи, так и для чтения. Номер_файла: Целое число между 1 и 255. Обращение к файлу из программы происходит под этим номером.
После того как файл обработан, с помощью команды CLOSE его необходимо закрыть. В программе это выглядит так: CLOSE #Номер_фаила
Доступ к файлу возможен между командами OPEN и CLOSE, например, командой WRITE можно записать предложение в файл. WRITE Номер_файла, Переменная [, Переменная]...
Следующая программа показывает, как можно вводить данные для файла адресов. В режиме APPEND каждое записываемое предложение помещается в конец файла. Таким образом, программу можно вызывать сколь угодно часто и дописывать данные в файл. Если же режим APPEND изменить на OUTPUT, данные будут каждый раз обновляться.
'********************************* '** Программа для ввода адресов ** '********************************* 'Объявление полей данных DIM nachnameS, vorname$, strasseS, plz$, ort$, telefon$, stlchwort$ DIM nocheinS 'Переключатель 'Открыть файл в режиме APPEND OPEN "adresse.asc" FOR APPEND AS #1 'Ввод данных будет продолжаться до тех пор, пока в поле nocheinS 'будет вводиться "Y" или "у" DO CLS 'Ввести поля данных INPUT "Фамилия : ", nachnameS INPUT "Имя . ", vorname$ INPUT "Улица : ", strasse$ INPUT "Почт.индекс: ", plz$ INPUT "Местность : ", ort$ INPUT "Телефон : ", telefon$ INPUT "Заглавие : ", stichwortS 'Записать предложение WRITE #1,nachname$,vorname$,strasse$,plz$,ort$,telefon$,stichwort$ PRINT 'Спросить, продолжить ли ввод INPUT "Следующий адрес? (Y/N)", nocheln$ LOOP WHILE UCASE$(nochein$)-"Y" 'Закрыть файл CLOSE #1 'Конец программы
Далее необходимо вывести содержимое созданного файла на экран. Это значит, что данные последовательно читаются, и отдельные поля при необходимости появляются на экране. Для распознавания конца файла используется функция EOF.