Основы офисного программирования и язык VBA


Чтение файлов последовательного доступа - часть 2


'Чтение файла 'Первые 8 строк For i = 1 To 8 Input #7, MyStr Debug.Print MyStr Next i

'Данные разных типов Input #7, MyBool, MyDate, MyNull, MyFloat Debug.Print MyBool, MyDate, MyNull, MyFloat

'читаем отформатированные числа Input #7, MyStr Debug.Print MyStr Input #7, MyStr Debug.Print MyStr

'дважды читаем данные типа Error Input #7, MyErr Debug.Print MyErr Input #7, MyErr Debug.Print MyErr

'чтение до конца файла Do While Not EOF(7) Input #7, MyStr Debug.Print MyStr Loop End Sub

Пример 14.4.

В результате будет напечатано:

Первая строка файла Зона 1 Зона 2 Привет, старик! Мама мыла раму мылом. False 14.06.99 Null 3,1416 3,14 03,142 6 Error 2000

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

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

Line Input #номер-файла, переменная

Здесь номер-файла имеет тот же смысл, что и для оператора Input, а переменная - имя строковой переменной или переменной типа Variant, в которую будет прочитана очередная строка файла. Оператор Line Input# считывает данные посимвольно, пока не обнаружит признак конца строки - символ возврата каретки (Chr(13)) или пару "возврат каретки - перевод строки" (Chr(13) + Chr(10)). Эти признаки в переменную не записываются. Никаких преобразований данных при построчном вводе не производится. Мы уже приводили пример чтения файла "read.me", созданного оператором Print#.

Следует заметить, что любой файл может быть открыт для чтения и прочитан оператором Line Input#. Другое дело, что, чаще всего, это не даст желаемого результата. Если, например, прочитать файл "readme.txt" с использованием оператора Line Input#, то будут получены следующие результаты:

"Первая строка файла" "Зона 1","Зона 2" "Привет,","старик!" "Мама ","мыла ","раму мылом. " #FALSE# #1999-06-14# #NULL# 3.1416,"3,14","03,142" 6 #ERROR 2000#




Начало  Назад  Вперед



Книжный магазин