- •Запись данных в файл
- •Файлы последовательного доступа
- •Чтение и запись последовательных файлов
- •Открытие файла
- •Закрытие файла
- •Печать в файл
- •Запись в файл
- •Чтение из файла
- •Запись данных в файл произвольного доступа
- •Чтение и запись файлов произвольного доступа
- •Открытие файла
- •Закрытие файла произвольного доступа
- •Применение оператора Type для определения записи
- •Вывод данных в запись
- •Ввод данных из записи
-
Запись в файл
При использовании оператора Print данные, записываемые в дисковый файл, формируются в пригодную для чтения форму, подобную текстовому документу. Если вы предполагаете читать эти данные программами на Visual Basic, то их следует записывать не оператором Print, а оператором Write. Оператор Write работает подобно оператору Print, но сохраняет существовавшие кавычки и разделяет выводимые данные запятыми. Эти запятые и кавычки упрощают Visual Basic определение конца одного элемента данных и начала другого. Если предполагается сохранить данные, а затем прочесть их программой, то вместо оператора Print воспользуйтесь оператором Write.
Оператор Write отделяет каждый элемент данных запятой и заключает каждую строковую величину в кавычки. Строки, возвращенные функцией Format(), также заключаются в кавычки. Использование кавычек и запятых для разделения отдельных элементов данных значительно упрощает применение оператора Input (описываемого в следующем пункте). Без них было бы практически невозможно определить, где кончается один записанный элемент и начинается следующий.
-
Чтение из файла
Для чтения данных из файла применяются операторы Input и LineInput. Первым аргументом каждого из этих операторов являются символ (#) и файловое число, затем следует запятая, отделяющая указатель файла, подлежащего чтению. Далее следуют аргументы— имена переменных, которым присваиваются прочитанные из файла значения.
В операторе Input переменные, следующие после запятой, определяют порядок и количество данных, которые будут прочитаны из файла. Пробелы и табуляторы, расположенные в начале строки, игнорируются. Если переменная должна принимать числовые значения, то Visual Basic пытается прочесть из файла число. Первый непустой символ рассматривается как начало числа, и Visual Basic продолжает чтение до тех пор, пока не встретится какой-нибудь символ, который не может быть частью числа (например, пробел, запятая, алфавитный символ или конец строки). Если переменная является строковой, то Visual Basic читает эту строку начиная с первого непустого символа и прекращает чтение, если встречает запятую или конец строки.
Если первый непустой символ является символом ("), то первым символом, прочитанным в строку, будет первый символ после символа (") и чтение будет продолжено до тех пор, пока не встретится второй символ (") или конец строки, т.е. будут прочитаны все символы, заключенные в кавычки, включая запятые.
Как видите, операторы Write и Input спроектированы для совместной работы в целях записи данных в файл и последующего их чтения. С другой стороны, оператор Print спроектирован для создания текстового файла, подлежащего чтению пользователем.
Оператор LineInput является дополнением оператора Input. Оператор LineInput присваивает единичному строковому аргументу все символы, обнаруженные в единичной строке файла. Строковому аргументу —переменной присваиваются все символы, включая начальные пробелы, запятые и кавычки. Оператор Line Input применяется для чтения в программу точной копии содержимого строки файла. Единственными символами, не пересылаемыми оператором Line Input, являются символы возврата каретки и перевода строки, рассматриваемые как конец строки.
Например, на панели Immediate используем операторы Input и Line Input для чтения содержимого текстового файла Exempl2.TXT:
Число, изображенное здесь, равно 12.643 и т.д.
“Число, изображенное здесь, равно 12.643 и т.д.”
“Число, изображенное здесь, равно” 12.643 и т.д.”
“Число, изображенное здесь, равно” 12.643 и т.д.”
234 23 456
Оператоы |
Их результат работы |
Open "SCRATCH.TXT" For Input As 100 |
Оператор открывает файл |
Input #100, B$, С$, D$ |
Оператор читает из первой строки файла в три отдельные строковые переменные: |
Print B$ |
Число |
Print C$ |
изображенное здесь |
Print D$ |
равно 12.643 и т.д. |
Input #100, B$ |
Оператор читает из второй строки файла в одну строковую переменную: |
Print B$ |
Число, изображенное здесь, равно 12.643 и т.д. |
Input #100, B$, а |
Оператор читает третью строку файла в строковую и числовую переменные: |
Print B$ |
Число, изображенное здесь, равно |
Print а |
12.643 |
Line Input #100, B$ |
Оператор читает четвертую строку файла и вся строка, включая запятые и кавычки, будет передана в строковую переменную: |
Print B$ |
"Число, изображенное здесь, равно" 12.643 и т.д. |
Input #100, е, f, g |
Оператор читает пятую строку файла в три числовые переменные (пробелы между числами будут восприняты как разделители): |
Print e Print f Print g |
234 23 456 |
Close #100 |
Оператор закрывает файл |