Язык программирования VBScript
Наверное нет языка программирования проще, чем VBScript – Visual Basic Scripting Edition. Даже начинающий программист способен освоить его за два-три дня, а человек знакомый с Visual Basic или Visual Basic for Applications (VBA) практически сразу может приступать к работе. Ниже приведены основные сведения по синтаксису языка, дано описание операторов и встроенных функций. К сожалению, обработка ошибок в VBScript реализована на очень примитивном уровне. Разработчики не предусмотрели конструкций для обработки исключительных ситуаций, таких как try-except и try-finally в Delphi. В разделах "!!!" и "!!!" мы рассмотрим способы преодоления этих ограничений.
VBScript является интерпретируемым языком. За выполнение программы отвечает Windows Script Host, который поставляется в составе операционной системы начиная с версии Windows 98. На момент написания данной книги, последняя версия VBScript имела номер 5.7 и поставлялась в составе Windows Vista. Обновления для предыдущих версий операционной системы можно скачать с сайта компании Microsoft.
Содержание |
Подготовительные мероприятия
Учебные примеры мы будем выполнять в Гедымине, для чего создадим глобальный макрос согласно приведенным ниже инструкциям:
- Запустим Гедымин;
- Подключимся к демонстрационной базе данных под учетной записью Administrator;
- Откроем окно Редактора скрипт-объектов;
- Создадим новый глобальный макрос под названием "Test VBScript";
- В поле Наименование функции введем TestVBScript.
Основы VBScript
Типы данных
В языке VBScript используется единственный тип данных – Variant (Вариант), который позволяет хранить в переменной число, строку, дату, булевское значение, ссылку на объект и другую информацию. Определить тип содержимого переменной можно с помощью набора функций: VarType, TypeName, IsArray, IsDate, IsEmpty, IsNull, IsNumeric, IsObject, которые будут рассмотрены ниже. Тип содержащейся информации еще называется подтипом варианта. Полный список подтипов приведен в следующей таблице:
| Подтип | Описание |
|---|---|
| Empty | Переменной не присвоено значение. При использовании неинициализированной переменной в числовых выражениях, будет подставляться 0, а в строковых – пустая строка. |
| Null | Переменная не содержит данных. |
| Boolean | Булевская переменная может принимать значения True, или False. |
| Byte | Целое число в диапазоне от 0 до 255. |
| Integer | Целое число в диапазоне от -32 768 до 32 767. |
| Currency | Число с фиксированной точкой в диапазоне от -922 337 203 685 477.5808 до 922 337 203 685 477.5807. |
| Long | Целое число в диапазоне от -2 147 483 648 до 2 147 483 647. |
| Single | Число с плавающей точкой одинарной точности. Для отрицательных значений допустимый диапазон
от -3.402823E38 до -1.401298E-45. Для положительных – от 1.401298E-45 до 3.402823E38. |
| Double | Число с плавающей точкой двойной точности. Для отрицательных значений допустимый диапазон от
-79769313486232E308 до -4.94065645841247E-324. Для положительных -- от 4.94065645841247E-324 до 1.79769313486232E308. |
| Date (Time) | Содержит число, представляющее дату в диапазоне от 1-го января 100 года, до 31 декабря 9999 года. |
| String | Последовательность символов. Максимальная длина в районе 2-х миллиардов знаков. |
| Object | Объект. |
| Error | Номер ошибки. |
В зависимости от выражения, в котором участвует переменная, ее содержимое будет автоматически приведено к нужному типу. Рассмотрим такой пример:
Option Explicit Sub TestVBScript Dim A, B A = 5 B = "12" Application.MessageBox A + B, "", vbOkOnly End Sub
Так как в выражении участвует числовая переменная A, интерпретатор преобразует значение переменной B из строки "12" в число и просуммирует их:
Изменим макрос так, чтобы переменная А тоже содержала строку:
Option Explicit Sub TestVBScript Dim A, B A = "5" B = "12" Application.MessageBox A + B, "", vbOkOnly End Sub
Запустим его на выполнение. Теперь на экране появится результат слияния (конкатенции) двух строк, а не сумма их числовых представлений:
Во избежании путаницы с автоматическим приведением типов, рекомендуется использовать функции конверсии: CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr.
Если результатом выражения должно быть именно слияние строк, а не сумма их числовых представлений, то следует использовать оператор & вместо +.
Переменные
Переменная – это удобное символьное обозначение области памяти, где приложение хранит некоторые данные. В процессе выполнения приложения значение переменной может изменяться. Перед использованием переменную следует объявить с помощью оператора Dim.
Dim A
С помощью одного оператора можно объявить сразу несколько переменных, если перечислить их имена через запятую:
Dim Left, Right, Top, Bottom
При объявлении нет необходимости в указании типа данных, так как все переменные имеют тип Variant.
Если в первой строке текста скрипта не указано Option Explicit, то использовать переменные можно без объявления. Но, такой путь может привести к трудно выявимым ошибкам. Достаточно один раз ошибиться в написании имени переменной в тексте программы, чтобы получить непредсказуемый результат. Мы рекомендуем всегда указывать Option Explicit и объявлять переменные.
Имя переменной должно соответствовать следующим требованиям:
- Начинаться с символа латинского алфавита;
- Состоять только из символов латинского алфавита или из символов латинского алфавита и цифр;
- Не превышать 255 символов в длину;
- Быть уникальным в пределах своей области видимости.