Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ЯЗЫК VBA - 2....doc
Скачиваний:
79
Добавлен:
17.12.2018
Размер:
1.62 Mб
Скачать

Оператор rSet

Этот оператор присваивает значение строковой переменной с выравниванием справа:

RSet СтрПеременная = СтрВыражение

СтрПеременная - имя строковой переменной, СтрВыражение - выражение строкового типа. В отличие от LSet оператор RSet нельзя использовать для копирования переменных записей. Результатом присвоения строк всегда является строка той же длины, что и СтрПеременная. Если при этом СтрВыражение короче, добавляются пробелы слева, длиннее - лишние символы слева удаляются.

Примеры:

Public Sub Assign4()

Dim Str1, Str2, Str3

Str1 = "0123456789" ' Начальное значение

Str2 = "abcd"

Debug.Print Str1, Str2

RSet Str2 = Str1 ' Результат - "0123"

RSet Str1 = "Вправо " ' Результат - " Вправо "

RSet Str3 = Str1 ' Результат - пустая строка ""

Debug.Print Str1, Str2, Str3

End Sub

Вот результаты отладочной печати:

0123456789 abcd

Вправо 0123

Оператор Set

Этот оператор применим при работе с объектами, устанавливает ссылку на вновь созданный или существующий объект. Его синтаксис:

Set ОбПеременная = {[New] ОбВыражение| Nothing}

ОбПеременная - имя переменной или свойства, New - необязательное ключевое слово, используемое для явного вызова операции создания нового экземпляра класса (объекта). Если ОбПеременная содержала ссылку на объект, при присвоении эта ссылка освободится. ОбВыражение может быть именем объекта (класса), другой переменной того же типа, функцией или методом, возвращающими объект соответствующего типа. Выполнение оператора Set с правой частью Nothing прерывает связь между ОбПеременной и объектом, на который она ссылалась. Если при этом на него не осталось других ссылок, ресурсы системы и память, выделенные под этот объект, освобождаются. В общем случае, если ключевое слово New не указано, новая копия объекта не создается, а ОбПеременная как значение получает ссылку на существующий объект. При этом может оказаться, что несколько переменных ссылаются на один объект и изменение этого объекта через одну из них влияет на все остальные.

Примеры:

Определим класс объектов Child:

'Класс Child

'Свойства

Public Age As Byte

Public Name As String

'Другие свойства и методы пока не определены

А теперь введем объекты этого класса:

Public Sub Assign5()

Dim Children(1 To 2) As Child

Dim Boy As Child, Girl As Child

'Создаем объекты

Set Children(1) = New Child

Set Children(2) = New Child

'Инициализируем их

Children(1).Age = 10

Children(1).Name = "Александр"

Children(2).Age = 7

Children(2).Name = "Мария"

Debug.Print "Имя: ", Children(1).Name, "Возраст: ", Children(1).Age

Debug.Print "Имя: ", Children(2).Name, "Возраст: ", Children(2).Age

'Утанавливаем дополнительные ссылки на существующие объекты

Set Boy = Children(1)

Set Girl = Children(2)

Boy.Name = "Саша"

Girl.Name = "Маша"

'Изменились сввойства объектов

Debug.Print "Имя: ", Children(1).Name, "Возраст: ", Children(1).Age

Debug.Print "Имя: ", Children(2).Name, "Возраст: ", Children(2).Age

'Удаляем одну из ссылок, но объект остается

Set Children(1) = Nothing

Set Children(2) = Nothing

Debug.Print "Имя: ", Boy.Name, "Возраст: ", Boy.Age

Debug.Print "Имя: ", Girl.Name, "Возраст: ", Girl.Age

End Sub

Пример 7.1. (html, txt)

Вот результаты отладочной печати:

Имя: Александр Возраст: 10

Имя: Мария Возраст: 7

Имя: Саша Возраст: 10

Имя: Маша Возраст: 7

Имя: Саша Возраст: 10

Имя: Маша Возраст: 7