Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Visual Basic.doc
Скачиваний:
105
Добавлен:
09.04.2015
Размер:
1.1 Mб
Скачать

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

В VBдля записи информации в файл используются инструкцииPrint# иWrite#.

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

Print #НомерФайла, [ (Spc(n) / Tab[(n)])] [ Выражение] [ , или ;]

Print #- обеспечивает вывод в последовательный файл в формате дисплея (т.е. аналогично выводу на печать, например, на форме).

Выражение -выражение, значение которого записывается в файл.

Если выражения разделяются «;», то в файл они записыва­ются без пробелов слитно.

Если выражения разделяются «,», то в файл они записыва­ются в фиксированные зоны длиной 14 символов (зонный формат).

Если в конце выражения не стоит «;» или «,», то выведенная в файл строка дополняется символами <CR>,обозначающими переход к началу строки (ASCII-код равен 13), и<LF>,обозначающими переход на другую строку (ASCII-код равен 10). Таким образом, каждому значению соответствует одна запись или одна строка при выводе в формате дисплея.

Spc(n) и Таb(n) определяют соответственно вставкуnпробе­лов между выводимыми выражениями и табуляцию наnколонок перед списком выражений.

Примеры

Print #fh, Text1.Text

Print #fh, "Фрагмент 1", " Фрагмент 2"

Print #fh, "Это составляет "; "единое целое"

Инструкция Write #имеет такой же синтаксис, что иPrint #. Отличие состоит только в форматировании вывода. ЕслиPrint# сохраняет данные в виде обычного текста, тоWrite# заключает текстовые строки в кавычки, а цифры выводятся без кавычек:

Print #fh,”Москва”, ”Киев”, 85

‘ в файле будет: Москва Киев 85

Write #fh, “Москва”,”Киев”, 85

‘ в файле будет: “Москва”, “Киев”, 85

Данные, сохраненные с помощью инструкции Write#, можно считать инструкциейPrint#.

Для удаления с дискового пространства неиспользуемого файла используется инструкция

Kill ИмяФайла

где Kill– зарезервированное слово.

Произвольный доступ

В отличие от последовательного доступа, при котором записи не структурированы, произволь­ный доступ предполагает, что записи имеют постоянную структуру, а следовательно и одинаковую длину. Это позволяет считывать данные в произвольном порядке. Обычно эти данные имеютпользовательский тип.

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

Файл произвольного доступа должен быть открыт инструкцией Open.

OpenИмяФайлаFor Random[Access Доступ] [Блокировка]As[#] НомерФайла [Len= ДлинаЗаписи]

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

Параметр Accessпозволяет задать права доступа к открывае­мому файлу:

Доступ

Пример

Без указания

Ореn “Date.dat” For Random As НомерФайла

Чтение (Read)

Ореn “Date.dat” For Random Access Read As НомерФайла

Запись (Write)

Ореn “Date.dat” For Random Access Write As НомерФайла

Чтение и запись

(ReadWrite)

Ореn “Date.dat” For Random Access Read Write As НомерФайла

Если права доступа не указаны, то по умолчанию используется ReadWrite.

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

  • Shared Файл может использоваться всеми процессами для считывания и записи.

  • Lock Read Никакой другой процесс не может считывать данные из файла.

  • Lock Write Никакой другой процесс не может записывать данные в файл.

  • Lock Read Write Никакой другой процесс не может считывать или записывать данные.

Пример

Open "c:\ADDRESS.DАТ" For Random Access Write As 1 Len = 27