Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Работа с записями



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

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

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

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

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

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

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

Type название Список полей

End Type

Следует отметить, что структура Type... End Type обяза­тельно должна быть расположена в разделе Declarations соответс-

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

Пусть в рассматриваемом примере название создаваемого ти­па будет 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

Другими словами, доступ к полям записей осуществляется в таком же формате, как и работа со свойствами объектов. При этом для заполнения полей записи, особенно в случае большо­го их количества, можно использовать конструкцию With...End With (аналогично заполнению свойств объектов). Формат этой конструкции следующий:

With запись

.поле1

.поле2

.noлeN

End With

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

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 Session 1 As Session Session l.Marks(l)= 4 Sessioni.Marks(2) = 5 Sessioni.Marks(3) = 3

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

Dim arrSession(5) As Session

arrSession(l).Marks(1) = 4

Переменные пользовательского типа можно передавать в про­цедуры и функции в качестве параметров, но при этом необходи­мо иметь в виду, что записи могут использоваться только как па­раметры—переменные. Например, при выполнении приведенного ниже кода осуществляется занесение данных в поля записи Ses­sion1 с использованием конструкции With... End With.

Private Sub CommandButton1_Click ()

Dim Sessioni As Session

Call WriteSession(Sessioni)

End Sub

Private Sub WriteSession(a As Session)

With a

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

.Number = 123456

.Marks(1) = 4

.Marks(2) = 5

.Marks(3) = 3

End With

End Sub





Дата публикования: 2015-01-23; Прочитано: 171 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2025 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.147 с)...