Программирование >>  Проектирование интерфейса пользователя 

1 ... 11 12 13 [ 14 ] 15 16 17 ... 153


на опция Break When Value Is True, предоставляющая возможность прервать выполнение программы в том случае, когда заданное логическое выражение (в нашем примере - SquareOfCircle > 300) даст в результате вгчисления истинное значение.


Ctramifeisncs >300

Content ................-

: ;>rocedure; [csfcuiateCirajtnference

jModuul .........

-3. .

ii.-wateh Type - - -.........i...............

I Was* Bipresain - -

:! MmnVtkx Is True

Г BteakWhenVebe Changes

Рис. З.6. Диалоговое окно Add Watch позволяет добавить объект наблюдения

Если для отладки вы пользуетесь клавишей <F8>, выполнение программы приостанавливается на каждой строке кода. Если же необходимо приостановить программу только в том случае, когда будет удовлетворено указанное условие, следует нажать <F5>.

Редактирование объекта наблюдения

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

1. Щелкните на имени нужного объекта наблюдения

2. Откройте меню Debug.

3. Выберите команду Edit Watch.

в окне Watches.

Откроется диалоговое окно Edit Watch, ссылающееся на объект наблюдения, который вы выбрали в окне Watches. Если вы внимательно присмотритесь к содержимому диалого-в1х окон Edit Watch и Add Watch, то заметите, что они различаются только заголовками.

Режим Quick Watch

Режим Quick Watch позволяет быстро ознакомиться со значением любой переменной или результатом вычисления выражения, ранее определенн1х в тексте программы. Например, легко увидеть результат вычисления Radius 2 - части всего выражения. Чтобы воспользоваться средствами Quick Watch, достаточно выполнить следующие действия.

1. Если программа, находящаяся в режиме отладки, приостановила свое выполнение, выделите в окне редактора выражение, которое вас интересует.

2. Откройте меню Debug.

3. Выберите команду Quick Watch.

Если вы решите воспроизвести пример, касающийся просмотра результата вычисления выражения Radius 2, то увидите на экране компьютера диалоговое okhoi Quick Watch, подобное тому, которое приведено на рис. 3.7.



Radius 2

! 100

Рис. З.7. Диалоговое окно Quick Watch - более эффективный инструмент просмотра содержимого переменных или результатов вычисления любых выражений, нежели средства добавления объектов наблюдения

Если вы помните, в примере, соответствующем листингу 3.3, переменной Radius было присвоено значение 10. Квадрат этой величины - разумеется, 100.

Режимы наблюдения за состоянием объектов данн1х программы - удобные инструменты отладки кода любого назначения и сложности.

Режим непосредственного исполнениякода

Окно Immediate, предназначенное для непосредственного исполнения кода, -один из моих любимых рабочих инструментов. Окно Immediate (рис. 3.8) позволяет выполнять коды различной степени сложности. Чтобы открыть окно, следует выбрать в строке меню редактора команду View=lmmediate Window.

0p-.pi

.ilrtdVrf

Hit T StrLiiff

I - StiiL) Debug.print T D-bijg.pr±ct ТуреЛам(Т) Dtbag,print, Т

End 5чЬ



.1 ffl

Рис.8. 5 жне Immediate отображается содержимое константы PI, определенной в тексте программы



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

Если необходимо воспользоваться средствами окна Immediate, откройте его, наберите текст нужной команды или выражения и нажмите клавишу <Enter>. Чтобы ознакомиться с содержимым константы PI, выполните следующие действия.

1. В режиме отладки выполните код листинга 3.3, дойдя до строки 5.

2. Выберите в строке меню редактора команду Viewlmmediate Window, чтобы открыть окно Immediate.

3. Щелкните в пределах окна Immediate, чтобы задать ему фокус ввода.

4. В окне Immediate наберите ? pi (? - краткая версия команды print, оставшаяся от пред]дущих версий Visual Basic. Редактор Visual Basic самостоятельно преобразует ? в print. Например, команда Debug.? PI будет преобразована Debug. Print PI).

5. Нажмите клавишу <Entei>.

Ниже появится значение 159, ранее присвоенное константа pi (см. рис. 3.8). В листинге 3.4 показан пример более сложного кода, который может быть исполнен с помощью средств окна Immediate.

Листинг 3.4. Пример непосредственного исполнения кода

1: Ope Xwin.ini for Input As #1 2: Line Input #1, s 3: Print s 4: Close #1

Строка 1 содержит команду открытия файла \win.ini, который присутствует на диске каждого компьютера, работающего под операционной системой Windows. Строка 2, ссылаясь на открытый файл с помощью номера #1, осуществляет чтение первой строки файла и присваивание полученного значения неявно заданной переменной s типа String. В строке 3 выполняется вывод содержимого переменной s в окно Immediate. На компьютере автора книги результат вывода выглядел так: ; for 16-bit арр support

Команда в строке 4 закрывает файл. Окно Immediate - удобный инструмент предварительной проверки кода перед его практической реализацией в составе программного модуля.

Стек вызовов

Использование служебного слова Call для вызова процедур восходит еще к языку ассемблера. В VBA по-прежнему можно использовать его перед именем процедуры. В техническом смысле инструкция вызова подпрограмм означает, что регистры сегмента кода и указателя инструкций в ЦПУ должны начать выполнение инструкций, определенных адресом CS:1P (это 16-битный адрес, но аналогично происходит работа и в 32-битной Windows). Для размещения локальных переменных создается стековый фрейм, в стеке хранится текущий С5:1Р-адрес, а локальные переменные размещаются непосредственно после выполнения CS: IP-инструкции.

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



1 ... 11 12 13 [ 14 ] 15 16 17 ... 153

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика