Работа с внешними файлами и устройствами
Файлы последовательного доступа
Последовательным (Sequential) доступом называется способ, при котором данные считыв аются последовательно от начала файла. Чаще всего он применяется для считывания данных из текстового файла формата TXT, в котором содержится последовательность ASCII-кодов символов. Каждая запись в таком файле представляет собой строку символов, заканчивающуюся кодами управляющих символов «13» и «10» (которые называются соответственно «возврат каретки» и «перевод строки»).
Для открытия текстового файла используется оператор
Open имя_файлаFor тип_доступаAs # номер
Здесь имя_файла – имя открываемого файла с указанием пути доступа к нему, тип_доступа – тип доступа (Input – для чтения, Output – для вывода, Append – для добавления), номер – порядковый номер от 1 до 255. В дальнейшем при работе с открытым файлом указывается не имя, а его порядковый номер.
Чтобы закрыть файл используется оператор Close (номер).
Для считывания одной строки из открытого для чтения текстового файла используется оператор Input:
Input # номер,имя_переменной
где имя_переменной – имя переменной типа String.
При открытии файла в его начало автоматически устанавливается так называемый «файловый указатель». После команды Input он перемещается к началу следующей строки. После считывания всех строк он устанавливается в конец файла. При попытке выполнить еще одну команду Inputв этом случае будет выдано сообщение об ошибке (код 62).
Для того, чтобы избежать аварийного завершения программы можно использовать логическую функциюEOF(номер), где номер – номер открытого файла. Например, для считывания данных из текстового файла A.TXT в строковый массив MAS(i) можно использовать цикл типа Do Until … Loop:
i=0
Do Until EOF(1)
i=i+1
Input # 1,MAS(i)
Loop
Полезной может оказаться также функция LOF(номер), возвращающая количество байтов памяти, занимаемых открытым файлом.
Запись данных в файл, открытый для записи, осуществляется командой
Print #номер, список_вывода
Здесь список_вывода – одна или несколько переменных (или строки символов, взятые в кавычки), разделенных либо запятыми (,), либо точками с запятой (;). В первом случае выводимые значения будут записаны в виде одной строки и разделены пробелами, во втором – выведены без разделителя, слитно. Если поставить точку с запятой в конец списка вывода, то следующая порция данных, выводимая оператором будет дописана в ту же строку.
Например, в результате выполнения двух операторов
Print #1, “Иванов”
Print #1, “Петров”
в открытым для вывода под номером 1 файле окажутся две строки по одной фамилии в каждой.
Если в конец первого оператора поставить точку с запятой:
Print #1, “Иванов” ;
Print #1, “Петров”
то будет записана одна строка в виде «ИвановПетров».
Следует отметить, что при попытке открыть для чтения несуществующий файл, будет выдано сообщение об ошибке (код ошибки 53). Если же дана команда открыть несуществующий файл для вывода или добавления, сообщения об ошибке не будет, файл с указанным именем будет создан.
Дата добавления: 2016-02-11; просмотров: 707;