Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LABVB10.doc
Скачиваний:
33
Добавлен:
16.03.2016
Размер:
704 Кб
Скачать

Лабораторная работа n 11. Структуры. Файлы.

Структура – гибкий и удобный способ построения данных произвольной структуры. Значение структуры, как и массива, состоит из нескольких компонентов, но, в отличие от него, эти компоненты могут иметь различные типы и доступ к ним осуществляется не по индексам (номерам), а по именам. Компоненты структуры называются полями.

Синтаксис описания структуры имеет вид:

<оператор объявления> Structure

<оператор объявления> <имя поля 1> As <тип>

<оператор объявления> <имя поля 2> As <тип>

<оператор объявления> <имя поля n> As <тип>

End Structure

Это описание помещается в разделе общих объявлений. Оно может иметь, например, такой вид:

Public Structure Person

Dim ID As Integer

Dim Name As String

Dim Address As String

Dim Phone As String

End Structure

Переменные типа структра создаются, как и для стандартных типов данных, c помощью операторов Dim, Public, Private. (По умолчанию переменные типа структура являются глобальными).

Dim myFriend As Person

Dim myFriends (100) As Person

Значением переменной myFriend, имеющей тип Person, является набор из данных четырех типов, представляющих собой порядковый номер (ID), имя (Name), адрес (Address) и телефон (Phone) одного из Ваших друзей. Поэтому необходимо задать значение каждого поля, например, так:

myFriend. ID = 1

myFriend.Name = “Остап Бендер“

myFriend.Address = “Хата с краю“

myFriend.Phone =”2-22-22“

Или:

MyFriends(5).Name = “Колобок“

И т.д.

Как следует из этого примера, для получения доступа к компонентам переменной типа структура необходимо указать имя переменной этого типа и после точки имя соответствующего поля.

Для упрощения обращений к переменным пользовательского типа используется оператор With. Он позволяет писать имена компонентов записи сокращенно, указав имя переменной только один раз. Формат оператора With:

With <имя переменной пользовательского типа>

<Операторы, обращающиеся к полям указанной переменной>

End With

В пределах оператора With имя компонента переменной задается так:

.<имя поля>

Например, можно задать значение переменной myFriend следующим образом:

With myFriend

.ID = 1

.Name = “Остап Бендер“

.Address = “ “

.Phone = ”2-22-22“

End With

Файлы

При работе с файлами необходимо:

  • открыть файл,

  • произвести необходимые операции (чтение, запись), т.е. осуществить доступ к файлу,

  • закрыть файл.

Существуют различные способы доступа к файлам:

  • последовательный (Sequential),

  • произвольный (Random),

  • двоичный(Binary).

Прежде чем начать операции с файлом (чтение, запись), необходимо обеспечить к нему доступ (открыть файл) с помощью функции FileOpen, которая имеет следующий синтаксис:

FileOpen (<номер файла>, <имя файла>, OpenMode. <режим> _ [,<необязательные параметры>]).

Номер файла (дескриптор файла) используется для идентификации файла, он может принимать целые значения от 1 до 511и задается либо конкретным значением либо переменной, имеющей необходимое значение.

Имя файла – полный путь (маршрут) к открываемому файлу, задается либо литеральной строкой, либо переменной, которой присваивается соответствующее значение.

Режим указывает один из следующих режимов работы:

      • Input – чтение данных из файла,

      • Output – запись данных в файл, начиная с первой позиции файла (Любая информация, имевшаяся в файле, будет потеряна),

      • Append – запись информации, начиная с конечной позиции файла (Имевшаяся в файле информация будет сохранена).

      • Binary,

      • Random.

Пример.

FileOpen(1, “c:\Projects\Bender\MyFile.dat” , OpenMode.Input)

MyPath = “c:\ Projects\Bender”

FileOpen (1,MyPath & “\MyFile.dat” ,OpenMode.Output)

FileOpen(2, MyPath & “Result.txt”,OpenMode. Append)

Запись / чтение данных в файл / из файла проводится через коммуникационные каналы ввода/вывода. При открытии файлов им ставятся в соответствие каналы, имеющие номера. Существуют ограничения на число открытых каналов, и функция FreeFile возвращает целое число, соответствующее следующему номеру канала, используемому функцией FileOpen.

Пример.

Dim i As Integer

Dim FileNumber As Integer

For i = 1 To 3

FileNumber = FreeFile()

FileOpen(FileNumber, "c:\Projects\MyFolder\Proba" & i & ".txt", OpenMode.Output)

Write(FileNumber, "Проба" & i)

FileClose(FileNumber)

Next

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

Для проверки наличия файла с каким–нибудь именем можно воспользоваться функцией Dir$. При вызове этой функции в качестве параметра возвращается либо строка с копией имени файла, если файл с таким именем существует, либо пустая строка, если файла с указанным именем нет.

Такую проверку можно запрограммировать следующим образом:

If Dir$(“First.txt”) <> “” Then

If InputBox(“First.txt уже существует. Удалить”) <> “Да” Then

Exit Sub

End If

End If

Open “First.Txt ” For Output As # 10

После окончания работы с файлами их следует закрыть: FileClose().

В скобках указываются номера закрываемых каналов, если параметр не указан, то закрываются все активные каналы.

В списке дескрипторов перечисляются номера закрываемых файлов. Номера файлов соответствуют номерам, задаваемым в функции FileOpen.

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]