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

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

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

 


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: