Просмотр значений в окне непосредственных вычислений — КиберПедия 

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Просмотр значений в окне непосредственных вычислений



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

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

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

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

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

 

X = X + 1

Debug.Print x

 

При этом в окне непосредственных вычислений выводится текущее значение переменной x. Работать с объектом Debug несложно, однако он обладает большими возможностями.

 

Просмотр ошибок в окне непосредственных вычислений

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

1. Создайте новый проект с формой (File > New Project). Выберите в диалоговом окне значок Standard EXE и нажмите кнопку ОК.

2. Дважды щелкните на форме Form1, чтобы открыть окно программы.

3. Введите следующий фрагмент в процедуре события Click формы Form1:

 

Private Sub Form_Click() Dim x As Integer

Задать обработчик ошибок

On Error GoTo looperr

 

' Цикл до x = 100000

Do While x < 100000

x = x + 1

Loop

 

'Обойти обработчик ошибок

Exit Sub

 

looperr:

Debug.Print "Ошибка!"

Debug.Print "x = " & Trim$(Str$(x))

End Sub

 

При запуске этой программы возникает ошибка. Удастся ли вам найти ее причину?



4. Запустите программу, щелкните на форме и посмотрите, что произойдет. Результат показан на рис. 9.1:

Рис. 9.1. Окно непосредственных вычислений с информацией об ошибке

 

Если вы не читали урок 7 или не помните, чем различаются типы переменных, скорее всего, причина ошибки покажется вам довольно загадочной. Все дело в том, что мы попытались присвоить целой переменной значение, выходящее за пределы допустимого интервала. В целых переменных могут храниться числа от -32 768 до 32 767. Поскольку мы пытаемся увеличить значение x до 100 000, ошибка возникает в тот момент, когда оно достигает 32 768. В подобных ситуациях следует объявлять переменную x с типом Long.

 

Исправление ошибки

После того как ошибка будет найдена, ее необходимо исправить. В нашем примере это делается так:

1. Завершите работу программы, если вы не сделали этого ранее.

2. В окне программы замените оператор

Dim x As Integer

в процедуре события Click на следующий:

Dim x As Long

3. Снова запустите программу (Run > Start).

На этот раз программа работает нормально, потому что длинное целое может хранить гораздо большие числа, чем простое целое. Обратите внимание на правильность синтаксиса. Visual Basic опознает все команды во время редактирования и не позволяет запускать программы с синтаксическими ошибками. Такие ошибки исправляются проще всего. К сожалению, многие ошибки вызваны неправильным выбором типа или неверными вычислениями. Значения подозрительных переменных можно проследить в окне непосредственных вычислений.

 

ПРИМЕЧАНИЕОб отладочных средствах и процессе отладки рассказано в уроке 12, «Отладка приложений».

 

Вы должны уметь отлаживать свои программы, а метод Print — удобное средство для проверки переменных во время выполнения приложения. Он применяется не только при отладке, но и в других случаях, например при создании простейших отчетов. Перед тем как переходить к выводу данных, мы рассмотрим еще одну возможность — печать текущей формы методом PrintForm.



 

Метод PrintForm

Метод PrintForm выводит текущую форму (если не была явно задана другая форма) на принтер, установленный по умолчанию. При этом печатается копия текущей формы с точностью до пикселя. Данный метод хорошо подходит для создания простейших экранных копий.

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

 

frmReport.PrintForm

 

В данном примере Visual Basic напечатает содержимое формы frmReport. Вместо нее можно указать frmSplash, frmMain, frmAbout или любую другую форму вашего проекта.

 

Коллекция Printers

Среди множества других полезных коллекций в Visual Basic существует коллекция Printers. B ней содержится список объектов-принтеров, зарегистрированных в вашей системе. Обратившись к коллекции с соответствующим запросом, можно сменить принтер, выбранный для приложения по умолчанию, вывести что-нибудь на печать и снова вернуться к стандартному принтеру.

Из следующего примера видно, как работать с коллекцией и узнать, какие принтеры установлены в вашей системе:

1. Создайте новый проект сочетанием клавиш Ctrl+N.

2. Выберите значок стандартного ЕХЕ-файла (Standard EXE) в диалоговом окне New Project.

3. Укажите имя проекта — PrintersCollection.

4. Задайте свойству Name формы Form1 значение frmMain, a свойству Caption -значение Список принтеров.

5. Щелкните правой кнопкой мыши на панели элементов и выберите в контекстном меню команду Components.

6. В диалоговом окне Components установите флажок рядом со строкой Microsoft Windows Common Controls 6.0. Закройте диалоговое окно кнопкой ОК.

7. Создайте на frmMain табличный список. Задайте его свойству Name значение lvwPrinters.

8. Дважды щелкните на форме frmMain, чтобы открыть окно программы.

9. Вставьте в процедуру события Resize следующий фрагмент:

 

Private Sub Form_Resize()

'Растянуть табличный список

lvwPrinters.Move 0, 0, ScaleWidth, ScaleHeight

End Sub

 

10. Вставьте в процедуру события Load следующий фрагмент:

 

Private Sub Form_Load()

Dim p As Printer

Dim x As ListItem

 

'Переключить табличный список в режим таблицы

With lvwPrinters

.View = lvwReport

.ColumnHeaders.Add , , "Принтер"

.ColumnHeaders.Add 2, , "Драйвер"

.ColumnHeaders.Add 3, , "Порт"

End With

 

 

' Вывести список принтеров в системе

For Each p In Printers

With p

Set x = lvwPrinters.ListItems.Add(, , .DeviceName)

x.SubItems(1) = .DriverName

x.SubItems(2) = .Port

End With

Next

 

End Sub

 

11. Сохраните и запустите проект.

Если в вашей системе установлены какие-либо принтеры, в окне появляется список (рис. 9.2).

 

Рис. 9.2. Вывод содержимого коллекции Printers

 






Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначен­ные для поддерживания проводов на необходимой высоте над землей, водой...

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





© cyberpedia.su 2017-2020 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав

0.007 с.