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

Окна наблюдения

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

Public Sub WorkwithBinTree()

Dim MyDict As New BinTree

Dim englword As String, rusword As String

GlobeVar = "Привет!"

'Создание словаря

MyDict.SearchAndInsert key:="dictionary", info:="словарь"

MyDict.SearchAndInsert key:="hardware", info:="аппаратура, аппаратные средства"

MyDict.SearchAndInsert key:="processor", info:="процессор"

MyDict.SearchAndInsert key:="backup", info:="резервная копия"

MyDict.SearchAndInsert key:="token", info:="лексема"

MyDict.SearchAndInsert key:="file", info:="файл"

MyDict.SearchAndInsert key:="compiler", info:="компилятор"

MyDict.SearchAndInsert key:="account", info:="учетная запись"

'Обход словаря

MyDict.PrefixOrder

'Поиск в словаре

englword = "account": rusword = ""

MyDict.SearchAndInsert key:=englword, info:=rusword

Debug.Print englword, rusword

'Удаление из словаря

MyDict.DelInTree englword

englword = "hardware"

MyDict.DelInTree englword

'Обход словаря

MyDict.PrefixOrder

'Debug.Print MyDict

End Sub

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

Окно локальных переменных - Locals

Наиболее простой и эффективный способ следить за состоянием вычислений заключается в том, чтобы во время отладки включить окно локальных переменных (Locals). Напоминаем, для этого есть соответствующая инструментальная кнопка панели Debug и команда меню View. В этом окне будут отображены все описанные в текущей процедуре переменные, их значения и типы. Обновление окна происходит автоматически при каждом переключении из режима выполнения в режим прерывания, а также при перемещении по стеку вызовов процедур. Первая переменная в этом окне - это специальная переменная с именем модуля, которая показывает все глобальные переменные, описанные на уровне текущего модуля. Для модуля класса первая переменная имеет имя Me и показывает свойства класса. Окно разбито на три столбца для имени переменной, ее значения и типа. Таким образом, окно позволяет следить за всеми локальными переменными текущей выполняемой процедуры и частью ее глобальных переменных, тех, которые описаны в текущем модуле. Отметим также, что объекты и массивы могут быть свернуты и развернуты, используя обычную технику знаков "+" и "-".

Давайте начнем отладку нашего примера, поставим первую точку прерывания после предварительного формирования словаря на операторе, запускающем префиксный обход дерева. Запустим программу на выполнение, и после ее останова на точке прерывания исследуем окно локальных переменных. Эта ситуация показана на следующем рисунке.

увеличить изображение Рис. 10.6.  Окно локальных переменных процедуры стандартного модуля

Заметьте, в окне Locals показана глобальная переменная модуля Examples и все локальные переменные исполняемой процедуры WorkWithBinTree. Объект MyDict класса BinTree на рисунке частично раскрыт. Как видите, окно позволяет тщательно проанализировать достаточно сложную структуру этого объекта. В окне Locals можно не только наблюдать за значениями переменных, но и изменять эти значения, редактируя поле Value.

Давайте нажмем клавишу F8 для выполнения следующего шага вычислений. Тем самым мы начнем исполнять метод PrefixOrder класса BinTree, вызванный объектом MyDict. Выполним в пошаговом режиме несколько операторов и остановимся после первой отладочной печати. Заметьте, что поскольку теперь исполнение идет в другом контексте, - исполняется модуль класса, то окно Locals полностью обновится и будет теперь задавать состояние исполняемого метода класса. Взгляните, как это выглядит на рисунке:

увеличить изображение Рис. 10.7.  Окно локальных переменных метода класса

Кроме показа переменных окно Locals позволяет проанализировать текущее состояние стека вызовов. Для этого в правом верхнем углу окна есть специальная кнопка, щелчок которой дает тот же эффект, что соответствующая инструментальная кнопка меню Debug. Продемонстрируем ее использование чуть позже, а сейчас обращаем внимание, что результаты исполнения оператора Debug.Print появились в окне Immediate, к рассмотрению которого мы и переходим.