Чтение данных

Работа с файлами последовательного доступа

Закрытие файлов

Открытие файлов

Синтаксис (сокращенный)

Open pathname For mode As [#]FileNumber

где pathname – полное имя файла;

mode – режим доступа к файлу. Может принимать следующие значения:

- Append – открыть файл для добавления данных,

- Binary –открыть двоичный файл,

- Input – открыть файл для чтения данных,

- Output – открыть файл для записи данных,

- Random - открыть файл прямого доступа.

FileNumber – целочисленное выражение, задающее идентификатор файла. Может иметь значение от 1 до 511 включительно.

При работе оператора Open создается специальный счетчик номеров открытых файлов (это параметр FileNumber) для однозначного определения файла, с которым программа работает в текущий момент.

Если указанный в операторе Open файл не найден по заданному пути или не существует, он будет создан этим оператором для режимов доступа Append, Output, Random. Для режима доступа Input новый файл естественно не создается.

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

Все открытые файлы по окончании работы с ними необходимо закрыть!

Синтаксис оператора закрытия файлов

Close [FileNamberList]

FileNamberList – список закрываемых файлов, представленных номерами файлов и перечисляемых через запятую. Если список файлов опущен, то закрываются все открытые файлы.

Файлы последовательного доступа – это, как правило, текстовые файлы, т.е. последовательности ASCII-символов, организованные в строки.

При открытии таких файлов возможны три режима доступа:

- Input – открыт для последовательного чтения данных;

- Output – открыть файл для последовательной записи данных, при этом информация записывается всегда с начала файла (предыдущая затирается, если в файле уже что-то записано);

- Append – открыть файл для добавления данных к уже имеющимся в файле (записи добавляются в конец файла).

Если файл открывается для чтения, то он должен существовать, иначе возникнет ошибка!

Чтение данных из файла последовательного доступа выполняется с помощью функции Input и операторов Input # и Line Input #.

Функция Input считывает из файла заданное количество символов и обычно используется для чтения данных, записанных в файл оператором Print #.

Синтаксис

Input(number, #filenumber),

где

number - целое число, которое задает количество считываемых из файла символов;

filenumber - номер файла.

При использовании этой функции следует иметь в виду, что необходимо знать количество считываемых символов. Поэтому предварительно необходимо вычислить длину считываемого файла с помощью функции Fileline.

Оператор Input # используется, когда необходимо прочитать данные, имеющие структуру с разделителями (в качестве разделителей - запятые). Такие файлы получаются при использовании оператора записи Write #.

Синтаксис

Input #filenumber, varlist,

где

filenumber - номер файла,

varlist - список переменных.

При работе этого оператора сначала считывается целая строка, а затем подстроки, отделенные разделителями (запятыми), помещаются в соответствующие переменные списка.

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


Оператор Line Input # используется для построчного чтения данных из последовательного файла, обычно записанного оператором Print #.

Синтаксис

Line Input #filenumber, varname,

где

filenumber - номер файла,

varname - имя переменной.

Оператор посимвольно считывает всю строку данных из файла и помещает ее в строковую переменную. При этом разделителем строк в файле служит стандартный разделитель строк символ возврата каретки CHR(13) или последовательность символов возврата каретки и перевода строки CHR(13)+CHR(10), причем в переменную varname эти разделители не вставляются.

Для того, чтобы прочитать все данные из файла при помощи этого оператора, необходимо организовать цикл чтения данных из файла.