Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MS_VB_dop_vozm_5_04.doc
Скачиваний:
5
Добавлен:
19.11.2019
Размер:
1.64 Mб
Скачать
  1. Специальные конструкции языка

    1. Пользовательские типы данных

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

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

Type название

список_полей

End Type

Структура Type ... End Type должна быть расположена в разделе Declarations соответствующего модуля с использованием одного из служебных слов, описывающих тип уровня модуля (Private или Public).

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

1. Фамилия, имя, отчество студента.

2. Номер зачетки.

3. Оценка по физике.

4. Оценка по математике.

5. Оценка по программированию.

Пусть названием создаваемого типа является Session. Тогда описание полей записи Session будет выглядеть следующим образом:

Private Type Session

Name As String

Number As Long

Physics As Byte

Math As Byte

Progr As Byte

End Type

Для получения доступа к созданной структуре необходимо одной или нескольким переменным в программе определить тип Session

Например:

Dim FirstSession As Session

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

Например:

FirstSession.Math=5

Можно также присваивать значение одной переменной пользовательского типа другой переменной такого же типа, например:

Dim Session1 As Session

Dim Session2 As Session

.

.

.

Session2=Session1

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

В качестве полей записи могут использоваться массивы – как статические, так и динамические, при этом работа с их элементами выполняется так же, как и обработка обычных массивов. Например, в рассматриваемом примере для типа Session можно вместо трех полей для оценок описать одно поле в виде массива Marks, состоящего из трех элементов:

Private Type Session

Name As String

Number As Long

Marks (1 to 3) As Byte

End Type

Dim Session1 As Session

Session1.Marks(1)=4

Session1.Marks(2)=5

Session1.Marks(3)=3

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

Dim arrSession(5) As Session

arrSession(1).Marks(1)=4

Переменные пользовательского типа можно передавать в процедуры и функции в качестве параметров, но при этом необходимо иметь в виду, что записи могут использоваться только как параметры-переменные [4]. Например, в приведенном ниже коде при вызове процедуры WriteSession переменная Session1 передается как параметр-переменная. Необходимо заметить, что в теле процедуры WriteSession обращение к полям записи Session1 осуществляется с использованием конструкции With ... End With.

Private Sub Form_Load()

Dim Session1 As Session

Call WriteSession (Session1)

End Sub

Private Sub WriteSession(a As Session)

With a

.Name = "Иванов Иван Иванович"

.Number = 12345

.Marks(1)=4

.Marks(2)=5

.Marks(3)=3

End With

End Sub

    1. Файлы

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

Существуют несколько видов файлов, определяющих формат хранения данных и особенности программного доступа к ним:

  • типизированные (двоичные файлы);

  • текстовые;

  • нетипизированные (файлы записей).

Рассмотрим приведенные типы файлов и их отличительные особенности.

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