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


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


Для чтения данных из файлов последовательного доступа используются операторы:

  1. Input# ѕ данные в файле записаны оператором Write#
  2. LineInput# ѕ данные в файле записаны оператором Print#.

Оператор Input# вызывается так:

Input #номер-файла, список-переменных

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

При чтении автоматически выполняются преобразования данных, обратные тем, что использовались при записи оператором Write#. В частности, кавычки вокруг строк, разделяющие запятые и пустые строки, игнорируются. Слово #NULL# дает значение Null, #TRUE# и #FALSE# переводятся в булевы значения True и False, универсальные даты вида #yyyy-mm-dd hh:mm:ss# переводятся в формат соответствующих переменных типа дата/время, #ERROR номер-ошибки# при чтении передает в переменную типа Variant номер ошибки. Если для числовой переменной соответствующие по порядку в файле данные будут не числовыми, ей будет присвоено значение 0.

По достижении конца файла, следующая попытка чтения из него приведет к ошибке. Во избежание этого для проверки на конец файла используется функцию:

EOF(номер-файла)

Она возвращает булево значение True, когда при чтении достигается конец файла, открытого в режиме последовательного доступа Input или произвольного доступа Random.

Приведем процедуру чтения записей ранее созданного файла "readme.txt". Заметьте, мы поступаем корректно, читаемые переменные имеют тип, согласованный с типом читаемой записи.

Пример 14.4.

(html, txt)

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

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

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


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



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