По моему мнению, окно Immediate Visual Basic изумительно. Хотелось бы, чтобы все отладчики имели такие развитые встроенные возможности отладки. Окно Immediate поддерживает подчиненную отладку и, по существу, является мини-интерпретатором Basic, позволяя выполнять фрагменты кода.
Окно Immediate показывает вывод трассы операторов Debug.Print. Имейте в виду, однако, что это окно обеспечивает отображение лишь 200 строк, поэтому может потребоваться прокрутить строки трассировки (по экрану), для того чтобы прочитать их. К сожалению, нельзя очистить окно Immediate программным способом, чтобы гарантировать просмотр важных операторов трассировки. Надеемся, что в следующей версии Visual Basic будет предложен метод Debug, clear.
Главное преимущество окна Immediate состоит в том, что в нем можно изменять значения переменных и вызывать подпрограммы прямо в приложении. Чтобы увидеть значение конкретной переменной программы, скажем, frmFoo.x, нужно использовать символ ? или оператор Print (т. е. для вывода значения нужно напечатать: ? FrmFoo.x). Прелесть окна Immediate в том, что в него встроены все замечательные IntelliSense-функции Microsoft. Например, если ввести правильное имя объекта, то IntelliSense покажет на экране методы и свойства этого объекта.
Технология IntelliSense известна также под названием Automatic Statement Completion (автоматическое завершение операторов). — Пер.
Для того чтобы изменить значение переменной, просто напечатайте строку кода Visual Basic в окне Immediate — точно так же, как если бы требовалось присвоить значение этой переменной в окне исходного кода. Окно Immediate "знает" все о свойствах "только-для-чтения" (read-only) и синтаксисе языка и известит вас через панель сообщения о том, что какое-либо действие окончилось неудачей.
Один удачный прием, доступный в окне Immediate, позволяет создать приспособление для быстрого тестирования. Например, если вы разрабатываете класс, то можете протестировать его в окне Immediate сразу же, как только напечатаете его код в исходном редакторе.
Если этот класс имеет имя clcMyclass и содержит метод с именем DoSomethingMagical, то можете ввести (строка за строкой) в окно Watch следующий код:
Set x = New clsMyClass
х.DoSomethingMagicai
Set x = Nothing
и протестировать данный метод. Убедитесь, что восстанавливаете в объектных переменных значение Nothing, чтобы не оставить в окне Immediate инициализированные переменные активными. Если установить точки прерывания в методе DoSomethingMagicai, то можно будет выполнять его пошаговый проход.
Кроме того, окно Immediate поддерживает вызов специальных отладочных функций. Вспомнив правила для ограничений на вызов отладочных функций из окна Watch Visual C++ (см. раздел "Вызов функций в окне Watch" главы 5), вы высоко оцените простоту использования окна Immediate. Единственное ограничение на вызов функций в окне Immediate — функция должна существовать в программе. Трудно сказать, какое свойство интенсивной отладки использовать легче.
Хотя окно Immediate позволяет "одним махом перепрыгнуть небоскреб", оно не позволяет писать полноценное приложение. Первое ограничение: в окне Immediate нельзя писать функции. Второе: окно Immediate выполняет за один раз только одну строку кода. Некоторые структуры управления, такие как циклы For...Next, требуют записи нескольких операторов. Для этого предназначена специальная операция ":", позволяющая располагать операторы в одной строке. Ниже приведен пример записи цикла For.. .Next в окне Immediate:
For i = 1 to UBound(a) : ? a(i) :'Next i