Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
VB-2012 / 2-cеместр / Заочники(весна) / Методика / Методичка-Контр-раб-VB-(весна).doc
Скачиваний:
8
Добавлен:
26.03.2015
Размер:
1.46 Mб
Скачать

Работа с файлами

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

  1. Файлы последовательного доступа. Файлы этой группы могут открываться в режиме чтения (Input), записи (Output) или присоединения (Append). Специальных средств поиска для них нет. Для того, чтобы получить данные из такого файла, надо его открыть и прочесть последовательно все данные до нужного места. В файл можно записывать данные разных типов.

  2. Файлы произвольного доступа. Файлы этой группы состоят из записей постоянной длины, что позволяет организовывать быстрый поиск данных и их локальное изменение внутри файла без его переписывания. В таких файлах чаще всего хранят записи пользовательского типа, все поля которых имеют одинаковую длину. возможен прямой доступ к элементу по его номеру. Разрешается одновременное выполнение чтения и записи в файл.

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

Файлы перечисленных типов открываются и создаются оператором Open, который вызывается так:

Open имя_файла For режим [Access доступ] [блокировка] As [#] номерФайла [Len=длина заиси]

Значения параметров:

Имя_файла – строковое выражение, задающее имя открываемого (создаваемого) файла; в него также может входить путь.

Режим – ключевое слово, которое для файлов последовательного доступа может принимать одно из значений: Input (ввод). Output (вывод), Append (присоединение). Для файлов с произвольным доступом в качестве режима необходимо указать Random, а для бинарных файлов – Binary.

Параметр доступ необязателен. Он ограничивает набор операций, выполняемых над открываемым файлом; возможные значения: Read (только чтение), Write (только запись), ReadWrite (чтение и запись).

Параметр блокировка позволяет ограничить набор операций над файлом другими приложениями; возможные значения: Shared (без всяких ограничений), Lock Read (запрещено чтение), Lock Write (запрещена запись), Lock Read Write(запрещено чтение и запись)

Параметр номер файла – целое число в интервале от 1 до 511, идентифицирующее файл для других операций.

Параметр длина записи – число не более 32767 – обязателен для файлов произвольного доступа и задает для них длину одной записи файла в байтах. Для последовательных необязателен.

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

Пример

Рассмотрим пример открытия файла для чтения и создания файла для записи.

Создадим следующую форму. Она позволяет менять текущий диск и папку и выбирать файл. По нажатию кнопки Открыть содержимое выбранного файла выводится в текстовое поле. По нажатию кнопки Сохранить содержимое текстового поля записывается в выбранный файл или в файл указанный в поле ввода рядом скнопкой.

Текст программы

Public q As String

Public ch As Boolean

Private Sub Command1_Click()’нажатие по кнопке Сохранить

If ch Then q = Dir.Path + "\" + FName.Text

If q <> "" Then

intf = FreeFile

Open q For Output As intf

Print #intf, Text1.Text

Close #intf

End If

End Sub

Private Sub Dir_Change()

File.Path = Dir.Path

End Sub

Private Sub Drive_Change()

Dir.Path = Drive.Drive

End Sub

Private Sub File_Click()

q = Dir.Path + "\" + File.FileName

End Sub

Private Sub FName_Change()

ch = True

End Sub

Private Sub open_Click()

If q <> "" Then

intf = FreeFile

Open q For Input As #intf

Label1.Caption = "Содержимое файла" + q

Text1.Text = Input$(LOF(intf), intf)

Close #intf

End If

End Sub