Иллюстрированный самоучитель по Microsoft Outlook 2002

Типы данных

Программа 20.5. Объявление перечисляемого типа.

Enum Week
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday End Enum
Sub Weekend()
Dim day As Week
Day = Saturday End Sub

После описания простейшего структурного типа данных (массива) перейдем к более сложному типу, а точнее, к типу, определяемому пользователем. В то время как массив представляет собой совокупность однотипных переменных, хотелось бы создать объединение элементов разных типов (запись).

Например, мы могли бы описать человека при помощи массива целых чисел: Dim Person () As Integer, где Person (1) задает рост, Person (2) – Вес, Person(3) – объем грудной клетки и т. д. Но это все элементы одного типа integer, а как же быть когда мы захотим определить не менее важный параметр человека – его имя, имеющее тип string, или дату рождения типа Date? Решением является создание записи. В нашем случае это будет выглядеть следующим образом: мы создаем пользовательский тип данных Person, элементами которого являются значения разных типов. Обращение же к таким переменным строится следующим образом: Person › Weight или Person › Name.

Конечно, перечисляемый тип тоже определяется пользователем, но это простой тип данных.

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

[Private |Public] Type имяТипа
имяПоля [([<размер>]}] As типДанных [имяПоля [ ([<размер>]) ] As типДанных]
End Type

Исходя из синтаксической конструкции, сразу можно сказать, что тип определяется либо на уровне модуля, либо на уровне приложения. Далее идет ключевое слово туре и собственно имя типа. После этого идет объявление полей нового типа. Это могут быть простые переменные и массивы встроенных типов, а также переменные и массивы уже определенных типов пользователя, которые в свою очередь могут иметь любую вышеуказанную структуру.

Для тех, кого последнее предложение заставило задуматься, небольшое пояснение. Определение записи можно рассматривать как дерево. Корень – это имя типа, а вершины – имена полей, которые могут являться корнями подобного же дерева. Не допускается использование рекурсивных определений, т. е. нельзя объявить тип следующим образом:

Type Заяц
Волк As Заяц
End Type

В приведенной ниже программе мы объявляем тип Person, имеющий поля name (имя) и birthday (дата рождения) простых типов. Далее мы объявляем тип Book, имеющий поле author определенного выше типа Person, поле title (название книги) типа string и поле content (названия глав книги), представляющее собой динамический массив типа string. После объявления типов мы объявляем одномерный массив типа Book и полностью инициализируем второй элемент массива, используя для доступа к полям записей точечную нотацию. Небольшой нюанс при инициализации поля content: поскольку это динамический массив, его необходимо переопределить. В конце просто выводится название одной из глав книги.

Программа 20.6. Объявление типов.

Public Type Person
name As String
birthday As Date End Type
Public Type Book
author As Person
title As String
content() as String End Type
Sub TypeExample()
Dim arrBook(l) As Book
arrBpok(1).author.name = "Федор Новиков"
arrBook(l).author.birthday = #10/10/1951#
arrBook(l).title = "Microsoft Office 2001 в целом"
ReDim arrBook(1).content(0 To 1)
arrBook(1).content(0) = "Введение"
MsgBox(arrBook(1).content(0)) End Sub
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.