Скриптовый язык для web-страниц VBScript. Сравнительный анализ JavaScript и 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 Left, Right, Top, Bottom

При объявлении нет необходимости в указании типа данных, так как все переменные имеют тип Variant.

Если в первой строке текста скрипта не указано Option Explicit, то использовать переменные можно без объявления. Но, такой путь может привести к трудно выявимым ошибкам. Достаточно один раз ошибиться в написании имени переменной в тексте программы, чтобы получить непредсказуемый результат. Мы рекомендуем всегда указывать Option Explicit и объявлять переменные.

Имя переменной должно соответствовать следующим требованиям:

  1. Начинаться с символа латинского алфавита;
  2. Состоять только из символов латинского алфавита или из символов латинского алфавита и цифр;
  3. Не превышать 255 символов в длину;
  4. Быть уникальным в пределах своей области видимости.

Область видимости и время жизни

Область видимости переменной определяется тем, где она была объявлена. Если внутри тела процедуры , то такая переменная называется локальной и доступна только в пределах этой процедуры. Если переменная объявлена в тексте скрипта, то она будет видима для всех процедур или функций определенных в этом скрипте. Локальные переменные могут иметь одинакове имена, если объявлены в разных процедурах.

В дереве Проводника окна Редактора скрипт-объектов присутствует специальный раздел – Константы и переменные – для объявления глобальных переменных, видимых для всех скрипт-функций проекта.

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

Присваивание значения переменной

Значение объявленной переменной присваивается с помощью оператора =. Имя переменной указывается слева от оператора, новое значение – справа. Например:

A = 200 B = "Наименование"

Скалярные переменные и массивы

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

Dim Monthes(11)

В языке VBScript левая граница индекса массива всегда 0. Таким образом размер массива вычисляется, как число указанное в скобках плюс один. При присваивании значения элементу массива следует указать его индекс в круглых скобках:

Monthes(0) = "Январь" Monthes(1) = "Февраль" Monthes(2) = "Март" ... Monthes(10) = "Ноябрь" Monthes(11) = "Декабрь"

Аналогично, при обращении к значению элемента мы используем его индекс:

MonthName = Monthes(5)

Массив не обязательно должен быть одномерным. VBScript позволяет нам задать до 60 размерностей при объявлении массива. Например, следующий оператор создаст двумерный массив из 12 строк и двух колонок :

Dim MonthDays(11, 1)

При обращении к элементам многомерного массива следует указывать все индексы:

MonthDays(0, 0) = "Январь" MonthDays(0, 1) = 31 MonthDays(1, 0) = "Февраль" MonthDays(1, 1) = 28 ...

Выше мы объявляли массивы, размер которых не меняется в процессе работы программы. Если заранее не известно сколько элементов понадобится, то можно объявить динамический массив:

Перед использованием следует установить размер динамического массива с помощью оператора ReDim:

ReDim A(25)

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

ReDim Preserve A(30)

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

Dim A ReDim A(25) ... Erase A

Константы

Правилом хорошего тона является объявление констант для многократно используемых в тексте программы значений. Грамотно присвоенное имя константы улучшает читабельность, а само использование -- упрощает процесс внесения изменений в код. В отличие от переменных, значение константы нельзя изменить в процессе выполнения программы. Создание константы происходит с помощью оператора Const:

Const CountryName = "Belarus" Const CountryCode = 375

Несколько констант могут быть объявлены в рамках одного оператора, через запятую. Как и переменная, константа обладает своей областью видимости в зависимости от того, где (в процедуре или за ее пределами) и как (Public или Private) она была объявлена. Константы, созданные оператором Const без указания Public или Private являются общедоступными по-умолчанию.

В дереве Проводника окна Редактора скрипт-объектов присутствует специальный раздел – Константы и переменные – для объявления глобальных констант, видимых для всех скрипт-функций проекта.

Значения строковых констант заключаются в двойные кавычки.

Значения типа Дата следует обрамлять символами решетки (#) и использовать американский формат: месяц/день/год. Например:

Const Public IndependenceDay = #03/25/1918#

Во избежание путаницы между константами и переменными рекомендуется использовать единый префикс для всех констант, например "con", или набирать имя константы в верхнем регистре.

Для облегчения труда программиста VBScript содержит набор предопределенных констант .

Операторы

Операторы VBScript подразделяются на пять категорий: арифметические, сравнения, слияния, логические и присваивания.

Арифметические операторы

Оператор Пример использования Описание
^ number ^ exponent Возводит number в степень exponent. Number может быть меньше нуля только в случае целочисленной степени. Если один из операндов Null, все выражение принимает значение Null. Если несколько возведений в степень выполняются подряд, результат вычисляется слева направо.
* number1 * number2 Произведение двух чисел. Если операнд имеет значение Empty, то он принимается равным нулю. Если хотя бы один из операндов Null, все выражение принимает значение Null.
/ number1 / number2 Вещественное деление двух чисел. Для операндов действуют правила аналогично оператору умножения.
\ number1 \ number2 Целочисленное деление. Перед вычислением оба операнда приводятся к типу Byte, Integer или Long. В остальном действуют правила как для оператора деления.
Mod number1 Mod number2 Остаток от целочисленного деления. Приведение операндов к целому, а также правила обращения с Empty и Null, как у целочисленного деления.
+ expression1 + expression2 Если оба операнда числа, результатом является их арифметическая сумма. Если оба операнда строки – слияние (конкатенция) двух строк. Если один операнд число, а другой строка, то строковый операнд будет преобразован в число и прибавлен к числовому. Если хотя бы один из операндов Null, все выражение принимает значение Null. Если оба операнда Empty, результат имеет целочисленное значение 0. Если только один оператор Empty, в качестве результата возвращается значение второго операнда.
- number1 – number2 или - number В первом случае возвращает разность двух чисел. Во втором – инвертирует знак числа. Правила для операндов со значениями Null и Empty, как для оператора умножения.

Операторы сравнения

Формат использования операторов сравнения:

Result = expression1 comparisonoperator expression2

где используются следующие операторы сравнения: < (меньше), <= (меньше или равно), > (больше), >= (больше или равно), = (равно), <> (не равно).

В зависимости от типов и значений операндов, сравнение осуществляется следующим образом:

Если То
Оба операнда числа. Выполняется сравнение двух чисел.
Оба операнда строки. Выполняется сравнение двух строк.
Один из операндов число, а второй строка. Строковый операнд приводится к числу и выполняется сравнение двух чисел.
Один из операндов Empty, а второй число. Операнд со значением Empty принимается равным 0.
Один из операндов Empty, а второй строка. Операнд со значением Empty принимается равным пустой строке "". Осуществляется сравнение двух строк.
Оба операнда Empty. Операнды считаются равными.
Хотя бы один из операндов Null. Результат принимает значение Null.

Специальный оператор Is применяется для сравнения двух объектных переменных и возвращает Истину, если обе переменных ссылаются на один и тотже экземпляр объекта.

Операторы конкатенции

Result = expression1 & expression2

Если операнд не является строкой, он приводится к строковому типу. Если оба операнда Null, то результат также принимает значение Null, однако, в отличие от остальных операторов, если только один операнд Null, то он принимается равным пустой строке. Операнд, имеющий значение Empty, также воспринимается как пустая строка "".

Логические операторы

VBScript предоставляет нам следующие логические операторы:

  1. Логическое исключение (Xor);
  2. Логический эквивалент (Eqv);
  3. Логическая импликация (Imp).

В качестве операндов логических операторов могут выступать булевские выражения или числовые значения. В первом случае результатом будет булевская константа, во втором – число. В зависимости от оператора подача на вход одного или двух значений Null может приводить к Null результату. Оператор Not является унарным и возвращает логическое отрицание выражения. Над числовым операндом оператор Not производит побитовую инверсию. Остальные логические операторы являются бинарными. В таблице ниже приведены результаты выполнения каждого из операторов в зависимости от значения операндов Exp1 и Exp2:

Exp1 Exp2 And Or Xor Eqv Imp
True True True True False True True
True False False True True False False
False True False True True False True
False False False False False True True
True Null Null True Null Null Null
False Null False Null Null Null True
Null True Null True Null Null True
Null False False Null Null Null Null
Null Null Null Null Null Null Null

В жизни чаще всего используются операторы And и Or и гораздо реже – Xor. Нам не приходилось сталкиваться с использованием на практике операторов Eqv и Imp. Если вам тяжело разбираться с приведенной выше таблицей резюмируем действие данных операторов:

  • And принимает значение Истина только если оба операнда Истина. В любом другом случае – это либо Ложь, либо Null.
  • Or принимает значение Истина, если хотябы один из операндов Истина.
  • Xor принимает значение Истина, если значения операндов различаются и Ложь, если они одинаковы.

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

Exp1 Exp2 And Or Xor Eqv Imp
0 0 0 0 0 1 1
0 1 0 1 1 0 1
1 0 0 1 1 0 0
1 1 1 1 0 1 1

Оператор присваивания

Оператор присваивания (=) подробно описан в разделе "Переменные".

Очередность применения операторов

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

В выражении, содержащем операторы разных категорий, арифметические действия выполняются в первую очередь, затем выполняются операторы сравнения и, в последнюю очередь, -- логические операторы. Все операторы сравнения имеют одинаковый приоритет и вычисляются слева-направо. Арифметические и логические операторы вычисляются в следующем порядке:

  1. Возведение в степень (^);
  2. Смена знака числа, унарный минус (-);
  3. Умножение (*) и деление (/);
  4. Целочисленное деление (\);
  5. Остаток от целочисленного деления (Mod);
  6. Сложение (+) и вычитание (-);
  7. Слияние строк (&).

Если умножение и деление встречаются в одном выражении, то операции выполняются в порядке следования слева-направо. Аналогичное правило действует в случае одновременного присутствия операторов сложения и вычитания.

Оператор слияния строк (&) не является арифметическим и по приоритету располагается между арифметическими операторами и операторами сравнения.

Очередность для логических операторов установлена следующая:

  1. Логическое отрицание, инверсия (Not);
  2. Логическое умножение, коньюнкция (And);
  3. Логическое сложение, дизьюнкция (Or);
  4. Логическое исключение (Xor);
  5. Логический эквивалент (Eqv);
  6. Логическая импликация (Imp).

Условные выражения

Условные выражения применяются для управления порядком выполнения команд программы и позволяют организовать переходы (ветвления) и повторения команд. Как правило, операторы сравнения используются вместе с условными выражениями.

Выражение If..Then..Else

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

Для выполнения единственной команды при выполнении заданного условия используется однострочный синтаксис выражения:

Dim S If DatePart("w", Now) = vbMonday Then S = "Понедельник" Application.MessageBox S, "", vbOkOnly

Обратите внимание, что секция Else в этом случае опущена. Для выполнения группы операторов следует заключить их между ключевыми словами Then и End If.

Dim S If DatePart("w", Now) = vbMonday Then S = "Сегодня понедельник" Application.MessageBox S, "", vbOkOnly End If

Если при выполнении условия требуется выполнить один код, а при невыполнении – другой, то используется синтаксис выражения с секцией Else:

Dim S If DatePart("w", Now) = vbMonday Then S = "Сегодня понедельник" Else S = "Сегодня не понедельник" End If Application.MessageBox S, "", vbOkOnly

При необходимости выбора из нескольких альтернатив подойдет синтаксис с конструкцией ElseIf:

Dim S, D D = DatePart("w", Now) If D = vbMonday Then S = "Понедельник" ElseIf D = vbTuesday Then S = "Вторник" ElseIf D = vbWednesday Then S = "Среда" ... End If Application.MessageBox S, "", vbOkOnly

Выражения If могут быть вложенными:

Dim S, D D = DatePart("w", Now) If D = vbMonday Then S = "Понедельник" Else If D = vbTuesday Then S = "Вторник" Else If D = vbWednesday Then S = "Среда" Else ... End If End If End If

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

Выражение Select..Case

Перепишем пример с днями недели с использованием выражения выбора:

Dim S Select Case DatePart("w", Now) Case vbMonday S = "Понедельник" Case vbTuesday S = "Вторник" Case vbWednesday S = "Среда" ... Case Else Err.Raise 32000, "", "Неизвестный день недели" End Select

Так как выражение селектора вычисляется только один раз, использование Select..Case приводит к более эффективному коду. Рекомендуется всегда использовать секцию Case Else для отлавливания некорректных или необработанных значений селектора.

Операторы цикла

Довольно часто возникает ситуация, когда код требуется запустить повторно. Для этого следует написать оператор цикла, который повторяет определенные команды снова и снова. Операторы цикла используются во многих ситуациях: при вычислении итоговой суммы по списку чисел, перемещении по записям набора данных или для запуска блока кода для нескольких объектов. Существует несколько циклов, описанных в следующих разделах. Некоторые из них выполняются, пока условие имеет значение Истина, некоторые – пока Ложь. И, наконец, есть такие, которые выполняются заданное число раз.

Оператор Do..Loop

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

Do [{While | Until} condition] Loop

так и в конце:

Do Loop [{While | Until} condition]

Команда Exit Do может встречаться неограниченное число раз в теле цикла. Обычно она используется вместе с условным выражением If..Then и позволяет передать управление на оператор, следующий непосредственно за циклом. При использовании Exit Do внутри вложенного цикла, управление перейдет во внешний цикл.

Следующий код позволяет заменить игральный кубик:

Dim Resp, Num Do Num = Int(6 * Rnd + 1) Resp = Application.MessageBox(Num & " Еще число?", "",_ vbYesNo or vbQuestion) Loop Until Resp = vbNo

While..Wend

Представляет собой усеченную версию оператора Do..Loop и позволяет выполнять группу команд пока условие Истинно. Синтаксис оператора:

While condition Wend

Обратите внимание, что Exit Do не действует внутри данного цикла. Циклы While..Wend могут быть вложенными.

For..Next

Данный цикл повторяет заданный набор команд указанное число раз. Синтаксис оператора имеет вид:

For counter = start To end Next

Перед стартом цикла переменной counter присваивается значение start. Далее проверяется выполнение условия counter <= end, при step >= 0, или counter >= end, при отрицательном шаге. После выполнение блока команд переменная counter увеличивается на значение step и все повторяется сначала.

Изменение счетчика в теле цикла не запрещено, но настоятельно не рекомендуется, так как затрудняет понимание логики программы и ее отладку.

Exit For может встречаться в теле цикла произвольное число раз. Циклы могут быть вложенными. Например, такой цикл инициализирует трехмерный массив:

Dim A(9, 9, 9) Dim I, J, K For I = 0 To 9 For J = 0 To 9 For K = 0 To 9 A(I, J, K) = 1 Next Next Next

For Each..Next

Оператор цикла For Each..Next повторяет заданный набор команд для каждого элемента массива или коллекции и имеет следующий синтаксис:

For Each element In group Next

Цикл выполняется, если в массиве или коллекции присутствует хотябы один элемент. Exit For может встречаться в теле цикла произвольное количество раз.

Проиллюстрируем использование For Each..Next на примере следующего кода, который выводит на экран список файлов из корневого каталога диска с:\

Dim fso, f, f1, fc, s Set fso = CreateObject("Scripting.FileSystemObject") Set f = fso.GetFolder("c:\") Set fc = f.Files For Each f1 in fc s = s & f1.name & vbNewLine Next Application.MessageBox s, "Файлы на c:\", vbOkOnly

Процедуры

Для экономии памяти и структурирования программы, фрагмент кода, вызываемый многократно в разных местах, может быть оформлен ввиде процедуры. В языке VBScript существуют два вида процедур: подпрограммы (Sub) и функции (Function). Подпрограмма – это последовательность операторов, обрамленная ключевыми словами Sub и End Sub. Подпрограмма может принимать на вход параметры, но не возвращает значения. Функция – последовательность операторов, заключенная между Function и End Function, -- возвращает результат и поэтому может быть использована в выражении. Каждая процедура должна иметь имя, уникальное в пределах модуля. Имена процедур, объявленных в глобальном модуле, должны быть уникальны в рамках всего проекта.

Определение подпрограммы и функции имеет следующий синтаксис:

| Private] Sub name [(arglist)] End Sub | Private] Function name [(arglist)] End Function

Public процедуры являются глобальными и доступны во всех скриптах программы. Private процедуры доступны только в том скрипте, где они были объявлены. Если не указано иное, объявленная процедура является общедоступной. Ключевое слово Default может быть использовано только в теле класса и служит для указания метода по-умолчанию этого класса.

Список параметров имеет следующий синтаксис:

Varname [, ...]

Параметры могут передаваться по значению (ByVal) или по ссылке (ByRef). По-умолчанию все параметры передаются по значению. Константы, результаты вычисления выражений могут быть переданы только по значению. Изменение параметра, переданного по ссылке, приведет к изменению значения наружной переменной. Поясним передачу параметров внутрь процедуры на следующем примере:

Sub DoCalculation(ByRef A, ByVal B, ByVal C) A = C * 2 B = C / 2 End Sub Sub TestVar Dim V1, V2 V1 = 1 V2 = 2 DoCalculation V1, V2, 10 " После выполнения процедуры DoCalculation " V1 = 20 " V2 = 2 End Sub

Переменные, объявленные внутри тела процедуры, являются локальными и уничтожаются по завершении ее выполнения. Значения локальных переменных не сохраняются.

Список параметров указывается в круглых скобках при вызове функции или при вызове подпрограммы с помощью оператора Call . Так, вызов процедуры DoCalculation в приведенном выше примере мы могли написать следующим образом:

Call DoCalculation(V1, V2, 10)

Выражение Execute

Классы VBScript

VBScript позволяет создавать новые классы, которые в дальнейшем мы будем называть VB классами. Вообще говоря, полноценными классами в понимании объектно-ориентированного программирования они не являются, поскольку не поддерживают наследование и, соответственно, полиморфизм. Так что из трех китов, на которых базируется объектно-ориентированная парадигма остается только инкапсуляция - возможность объединять в рамках одной сущности данные и методы.

Определение класса осуществляется с помощью следующей конструкции:

Class name statements End Class

где name - это имя класса, а statements - это одно или несколько определений переменных, свойств, процедур или функций, называемых так же членами класса. Обратите внимание, что в отличие от Delphi, где код определения класса содержит только объявления процедур и функций, в VB классе код членов прописывается прямо в тексте класса.

Члены класса могут быть объявлены как Private или Public. Первые видны только внутри кода данного класса, вторые же доступны как для внутреннего кода, так и снаружи. Если переменная или функция (процедура) не содержат явного определения Public или Private, то они считаются общедоступными. Процедуры или функции объявленные как Public внутри блока класса становятся методами данного класса.

Переменные, объявленные как общедоступные, становятся свойствами класса наравне со свойствами объявленными непосредственно с помощью конструкций Property Get, Property Let, Property Set.

Определение свойств класса

Выше мы уже говорили о том, что поля класса явно или не явно объявленные как Public, становятся его свойствами. Кроме этого, создать свойство класса можно определив специальные функции для считывания значения свойства (Property Get), а также для его присвоения (Property Let или Property Set).

Синтаксис определения таких функций следующий:

| Private] Property Get name [(arglist)] [ name = expression] [ name = expression] End Property Property Let name ( value) End Property Property Set name( reference) End Property

Определив только одну функцию, считывания или присвоения, можно создать свойство, соответственно, только для чтения или записи. Процедура Property Let используется для присвоения простых типов данных, а Property Set для передачи ссылки на объект. Обратите внимание, что все три функции могут принимать на вход произвольный список параметров. Таким образом можно организовать, например, свойства-массивы, передавая в качестве аргумента индекс элемента.

Создание и уничтожение экземпляра VB класса

Создание экземпляра VB класса осуществляется с помощью оператора New.

Dim X Set X = New classname

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

‘ объявление переменной и создание экземпляра класса Dim X Set X = New classname ... ‘ использование экземпляра класса... ‘ уничтожение экземпляра класса Set X = Notning ...

События Initialize и Terminate

Событие Initialize происходит при создании экземпляра класса, а Terminate - при его уничтожении. Разработчик может определить свои обработчики данных событий. Ниже приведен пример использования событий создания и удаления объекта:

Class TestClass " Определение обработчика события Initialize. Private Sub Class_Initialize MsgBox("TestClass started") End Sub " Определение обработчика события Terminate. Private Sub Class_Terminate MsgBox("TestClass terminated") End Sub End Class " Создание экземпляра класса TestClass. " На экран будет выведено сообщение "TestClass started" Set X = New TestClass " Уничтожение экземпляра. " На экран будет выведено сообщение "TestClass terminated" Set X = Nothing

В данном уроке речь пойдёт о функции Function … End Function - подпрограммы, которая возвращает определённое значение и о процедуре Sub … End Sub - подпрограмме, которая ничего не возвращает. Парой они могут оказаться просто жизненно необходимыми при решение некоторых задач в сценариях VBScript .

Функция Function … End Function.

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

Функция (Function … End Function) может пригодиться нам когда нужно выполнить одно и то же действие (сценарий, по другому - выражение) несколько раз, но с разными данными. Вместо того, что бы по сто раз дублировать одно и то же выражение, можно записать его только один раз.

Вначале идёт ключевое слово Function , а после него идёт название функции, которое Вы придумываете сами. После её названия в круглых скобках, через запятую, указываются параметры функции. Далее уже идёт тело функции, которое закрывается ключевыми словами End Function . Давайте посмотрим пример:

"Урок VBScript №3 "file_1.vbs dim a, b Function fun_name(a, b) Dim rezult rezult = a+b fun_name = rezult "присваиваем значение функцие, которое она нам вернёт End Function MsgBox fun_name(5,110) MsgBox fun_name(15,16) MsgBox fun_name(25,15)

"Урок VBScript №3

"Функции (Function ... End Function) и процедуры (Sub ... End Sub)

"file_1.vbs

dim a , b

Function fun_name (a , b )

Dim rezult

rezult = a + b

fun_name = rezult "присваиваем значение функцие, которое она нам вернёт

End Function

MsgBox fun_name (5 , 110 )

MsgBox fun_name (15 , 16 )

MsgBox fun_name (25 , 15 )

На примере видно, что в функции можно объявлять свои переменные. Так же можно в теле самой функции, присвоить переменной значение которое она нам вернёт. Эта переменная имеет такое же название, что и функция. Это нужно для того что бы функция возвращала нам значения при её вызове с помощью MsgBox в конце примера. Если этого не надо, то функция вызывается так: fun_name 5,110 (без скобок) .

С этим вроде бы всё понятно. Теперь идём дальше.

Процедура Sub … End Sub.

Процедура Sub … End Sub можно использовать в тех же целях, что и функцию (Function … End Function), но с одним условием - она не возвращает значение. Всё происходит в теле самой процедуры.

Процедура объявляется ключевым словом Sub , далее идёт произвольное имя процедуры и в круглых скобках её значение. Закрывается процедура ключевыми словами End Sub . Давайте посмотрим на пример:

"Урок VBScript №3 "Функции (Function ... End Function) и процедуры (Sub ... End Sub) "file_2.vbs dim a, b Sub sub_name(a, b) Dim rezult rezult = a+b MsgBox rezult End Sub Call sub_name(5,110) Call sub_name(15,16) Call sub_name(25,15) sub_name 25,1

"Урок VBScript №3

"Функции (Function ... End Function) и процедуры (Sub ... End Sub)

"file_2.vbs

dim a , b

Sub sub_name (a , b )

Хотя в VBScript определен только один тип

, внутри этого типа имеется разделение на подтипы , описание которых приведено в табл. П2.1. Для преобразования переменных к определенному подтипу нужно использовать соответствующую функцию преобразования; такие функции также представлены в табл. П2.1.

Таблица П2.1. Подтипы данных

Подтип Функция преобразования Описание
- Автоматически присваивается новым переменным, когда для них еще не определено явное значение
- Указывает на то, что переменная не содержит допустимых значений
Используется для работы с логическими переменными, принимающим два допустимых значения: или
Содержит целые числа в диапазоне от 0 до 255
Содержит целые числа в диапазоне от –32768 до 32768
Специальный числовой формат для денежных величин
Содержит целые числа в диапазоне от -2147483648 до 2147483647
Тип чисел с плавающей точкой одинарной точности
Тип чисел с плавающей точкой двойной точности
Содержит числа, соответствующие датам и времени от 1 января 100 года до 31 декабря 9999 года
Символьный подтип данных. Текстовые строки в VBScript - это последовательность символов, заключенных в двойные кавычки
- Ссылка на объект
- Тип данных, предназначенный для хранения номеров ошибок

В переменную, которая была ранее объявлена с использованием ключевого слова

, можно записать ссылку на какой-либо объект. Делается это с помощью оператора , например:
Set FSO=CreateObject("Scripting.FileSystemObject")

Здесь функция

возвращает экземпляр объекта , ссылка на который заносится в переменную . :

Константы

Пользовательские константы в VBScript объявляются с помощью ключевого слова

, например:
Const MyConst="Это моя константа"

Кроме этого, VBScript поддерживает много встроенных именованных констант (их не нужно дополнительно объявлять в сценарии), применение которых упрощает использование различных внутренних функций (например,

или ). Имена, значения и описания внутренних констант приведены в табл. П2.2–П2.9.

Таблица П2.2. Константы для обозначения цветов

Имя Значение Описание
&h00 Черный цвет
&hFF Красный цвет
&hFF00 Зеленый цвет
&hFFF Желтый цвет
&hFF0000 Синий цвет
&hFF00FF Фиолетовый цвет
&hFFFF00 Бирюзовый цвет
&hFFFFFF Белый цвет

Таблица П2.3. Константы для нумерации дней недели

Имя Значение Описание
1 Воскресенье
2 Понедельник
3 Вторник
4 Среда
5 Четверг
6 Пятница
7 Суббота

Таблица П2.4. Константы для определения первого дня в неделе и первой недели в году

Имя Значение Описание
0 Использовать для определения первого дня недели региональные настройки системы
1 Первой неделей в году считается та, в которой было 1 января
2 Первой неделей в году считается та, в которой было по крайней мере четыре дня нового года
3 Первой неделей в году считается первая полная неделя

Таблица П2.5. Константы для работы с датой и временем

Имя Значение Описание
0 Дата и время выводятся в формате, определяемом региональными настройками системы
1 Выводить дату, используя полный формат
2 Выводить дату, используя краткий формат
3 Выводить время, используя полный формат
4 Выводить время, используя краткий формат

Таблица П2.6. Константы для диалоговых окон

Имя Значение Описание
0 Выводится кнопка OK
1 Выводятся кнопки OK и Отмена (Cancel)
2 Выводятся кнопки Стоп (Abort), Повтор (Retry) и Пропустить (Ignore)
3 Выводятся кнопки Да (Yes), Нет (No) и Отмена (Cancel)
4 Выводятся кнопки Да (Yes) и Нет (No)
5 Выводятся кнопки Повтор (Retry) и Отмена (Cancel)
16 Выводится значок Stop Mark
32 Выводится значок Question Mark
48 Выводится значок Exclamation Mark
64 Выводится значок
0 По умолчанию в окне выбирается первая кнопка
256 По умолчанию в окне выбирается вторая кнопка
512 По умолчанию в окне выбирается третья кнопка
768 По умолчанию в окне выбирается четвертая кнопка
0 Диалоговое окно выводится в модальном режиме
4096 Диалоговое окно выводится в модальном режиме и располагается сверху всех запускаемых приложений

Таблица П2.7. Результаты нажатия кнопок в диалоговых окнах

Имя Значение Описание
1 Нажата кнопка OK
2 Нажата кнопка Отмена (Cancel)
3 Нажата кнопка Стоп (Abort)
4 Нажата кнопка Повтор (Retry)
5 Нажата кнопка Пропустить (Ignore)
6 Нажата кнопка Да (Yes)
7 Нажата кнопка Нет (No)

Таблица П2.8. Константы для обозначения подтипов данных

Имя Значение Описание
0 Переменная не инициализирована
1 Переменная не содержит корректных данных
2 Переменная имеет подтип
3 Переменная имеет подтип
4 Переменная имеет подтип
5 Переменная имеет подтип
6 Переменная имеет подтип
7 Переменная имеет подтип
8 Переменная имеет подтип
9 Переменная имеет подтип
10 Переменная имеет подтип
11 Переменная имеет подтип
12 Переменная имеет подтип (только для массивов переменных типа )
13 Объект доступа к данным
14 Переменная имеет подтип
17 Переменная имеет подтип
8192 Переменная является массивом

Таблица П2.9. Прочие константы

Имя Значение Описание
Chr(13) Возврат каретки
Chr(13) & Chr(10) Возврат каретки и перевод строки
Chr(12) Перевод страницы
Chr(10) Перевод строки
Chr(0) Символ с нулевым кодом
Нулевая строка Нулевая строка
Chr(9) Символ табуляции
Chr(11) Символ вертикальной табуляции
-2 Использовать значения по умолчанию из региональных настроек системы
-1 Логическое значение "истина"
0 Логическое значение "ложь"
-2147221504 Определяет минимальное значение для номеров ошибок, задаваемых пользователем

Массивы в VBScript могут быть двух видов: статические (фиксированной длины) и динамические (переменной длины). Объявляются массивы, как и обычные переменные, с помощью ключевого слова

.

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

В языке VBScript (в отличие, например, от VBA) нумерация в массивах всегда начинается с нуля, поэтому объявленный выше массив

будет содержать 11 элементов, обращаться к которым нужно следующим образом:

Можно объявить двумерный массив, указав максимальные значения индексов для строк и столбцов соответственно, например:

Dim MyArr(5, 10) "Массив из 6 строк и одиннадцати столбцов

При объявлении динамического массива его размеры в круглых скобках не указываются:

Для использования динамического массива в сценарии применяется оператор

, который определяет конкретную длину массива, например:

После этого к элементам динамического массива можно обращаться так же, как и к элементам обычного:

MyArr(0)="Это первый элемент"
MyArr(1)="Это второй элемент"

Отметим, что размеры динамического массива можно менять неоднократно (с помощью того же

). Для сохранения при этом содержимого массива следует в операторе использовать ключевое слово , например:

Операторы

В VBScript поддерживаются операторы нескольких типов, которые описаны ниже.

Арифметические операторы

Арифметические операторы языка VBScript представлены в табл. П2.10.


Таблица П2.10. Арифметические операторы

Оператор Описание
(унарный оператор) Изменение знака аргумента на противоположный
(бинарный оператор) Вычитание двух чисел
Сложение двух чисел
Умножение двух чисел
Деление двух чисел
Целочисленное деление двух чисел
Вычисление остатка от деления двух чисел
Оператор возведения в степень

Операторы отношения и логические операторы

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

или .

Таблица П2.11. Операторы отношения


Также внутри условных операторов могут применяться логические операторы (табл. П2.12).


Таблица П2.12. Логические операторы

Оператор Описание
Оператор отрицания. Возвращает , если операнд равен . В противном случае возвращает
Оператор отношения "ИЛИ". Возвращает , если один из операндов равен . В противном случае возвращает
Оператор отношения "ИСКЛЮЧАЮЩЕЕ ИЛИ". Возвращает , если один из операндов равен , а другой равен . В противном случае возвращает
Оператор отношения "И". Возвращает , если оба операнда равны . В противном случае возвращает

Условные операторы

В VBScript поддерживается условный оператор

. Общий вид этого оператора:
If условие_1 Then
выражение_3 ]

При выполнении оператора

оценивается логическое условие (условие_1 ), стоящее после ключевого слова . Если в результате оценки условия получилось значение , то выполняется и происходит выход из оператора. В противном случае начинают по очереди проверяться условия, стоящие после ключевых слов ; если одно из этих условий истинно, то выполняется соответствующее выражение, после чего управление передается следующему после End If оператору. Если ни одно из проверяемых условий не является истинным, выполняется выражение, стоящее после ключевого слова . Пример:

Другим оператором, позволяющим производить выбор из нескольких вариантов, является

. Синтаксис этого оператора:
Select Case выражение
Case значение_1
выражение_3 ]

Здесь сначала вычисляется значение , которое затем по очереди сравнивается со значениями, стоящими после ключевых слов

. В случае совпадения выполняются операторы в соответствующем блоке . Если же ни одно из имеющихся значений не совпадает со значением , то выполняются операторы, стоящие после слова Else. Пример использования оператора :
Color = "Цвет непонятен"

Операторы циклов

В VBScript поддерживаются несколько типов циклов: цикл

, цикл , цикл , цикл . Рассмотрим каждый из них подробнее.

Цикл For…Next

В общем случае оператор цикла

записывается следующим образом:
For counter=start То end

Параметр здесь является счетчиком цикла;

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

Пример использования цикла

приведен в листинге П2.1. Листинг П2.1. Пример использования цикла
"Цикл выполнится 11 раз

Цикл For Each…Next

Оператор цикла

предназначен для перебора всех элементов массива или коллекции:
For Each element In group

Здесь параметр является переменной, в которую будет записываться значение текущего элемента массива или коллекции при итерациях; - имя массива или коллекции объектов.

Замечание

Напомним, что в JScript для перебора всех элементов коллекции необходимо использовать вспомогательный объект

.

С помощью оператора

можно осуществить немедленный выход из цикла.

Пример использования цикла

приведен в листинге П2.2. Листинг П2.2. Пример использования цикла
"Объявляем переменные
Dim FSO, Folder, Files, File, s
s = "Список файлов" & vbCrLf
"Создаем объект FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
" Создаем объект Folder для корневого каталога диска С:
Set Folder = FSO.GetFolder("C:\")
"Создаем коллекцию Files всех файлов в корневом каталоге диска С:
"Перебираем все элементы коллекции Files
"Выделяем имя файла для текущего элемента File коллекции
"Выводим сформированную строку на экран

Цикл While…Wend

записывается в следующем виде:

Таким образом, в цикле

условие выполнения тела цикла проверяется перед началом очередной итерации. Если условие равно , то тело цикла выполняется, в противном случае цикл завершается.

Пример использования цикла

приведен в листинге П2.3. Листинг П2.3. Пример использования цикла
theCount = 42 "Начальное значение счетчика цикла
theMoments = "До взрыва осталось " & theCount & " сек!"
theMoments = "Осталась секунда!"
theCount = theCount - 1 "Уменьшаем значение счетчика

Цикл Do…Loop

Этот цикл может применяться в двух видах (с предусловием, которое проверяется до начала очередной итерации, и с пост-условием, которое проверяется после окончания итерации):

Do условие
Loop условие

Если в цикле используется ключевое слово

, то итерации продолжаются до тех пор, пока равно ; если же применяется , то как только значением условия станет , произойдет выход из цикла.

Оператор

позволяет выйти из цикла до завершения его итераций.

Пример использования цикла

приведен в листинге П2.4. Листинг П2.4. Пример использования цикла
Dim howFar "Верхний предел для счетчика цикла
Dim sum(10) "Массив из 11 элементов, индексы от 0 до 10
"Цикл выполнится 11 раз

Прочие операторы

Рассмотрим еще несколько часто применяемых операторов (табл. П2.13).


Таблица П2.13. Прочие операторы

Обработка исключительных ситуаций

Режим обработки исключительных ситуаций в VBScript включается с помощью оператора

. Если после этого при исполнении какою-либо оператора в сценарии произойдет ошибка времени выполнения, то управление передастся к следующему оператору в тексте.

Для анализа ошибок используется специальный объект

, который содержит два свойства: - числовой код возникшей ошибки и - краткое описание этой ошибки.

В качестве примера приведем часть сценария, в которой происходит обработка исключительных ситуаций при подключении сетевого диска:

On Error Resume Next " Включаем обработку ошибок времени выполнения
" Подключаем сетевой диск
WshNetwork.MapNetworkDrive Drive, NetPath
Mess="Ошибка при подключении диска " & Drive & " к " & NetPath &_
"Код ошибки: " & е.number & "Описание: " & е.description
WshShell.Popup Mess, 0, "Подключение сетевого диска", vbCritical
Mess = "Диск " & Drive & " успешно подключен к " & NetPath
WshShell.Popup Mess, 0, "Подключение сетевого диска", vbInformation

Для отмены режима обработки исключительных ситуаций нужно выполнить оператор

.

Процедуры и функции

VBScript поддерживаются два вида подпрограмм: встроенные функции и функции или процедуры пользователя.

Математические функции

Имеющиеся в VBScript функции, предназначенные для математических вычислений, описаны в табл. П2.14.


Таблица П2.14. Математические функции

Функция Описание
Возвращает абсолютное значение числа
Возвращает арктангенс числа
Возвращает косинус числа
Экспоненциальная функция, возвращает число е, возведенное в степень
Возвращает целую часть числа
Возвращает натуральный логарифм числа
Возвращает случайное число от 0 до 1
Round(х[, nvmdecimal] )
Возвращает результат округления числа с точностью до знаков после запятой
Знаковая функция числа
Возвращает синус числа
Вычисляет квадратный корень из числа и возвращает полученное значение
Возвращает тангенс числа

Символьные функции

Наиболее часто используемые функции, с помощью которых можно производить различные операции над символьными строками, описаны в табл. П2.15.


Таблица П2.15. Символьные функции

Функция Описание
Возвращает ASCII-код первого символа в строке
Возвращает символ с ASCII-кодом
InStr( str1, str2[, compare] )
Возвращает индекс символа, с которого начинается первое вхождение подстроки в строку . Параметр задает номер символа, с которого следует начинать поиск. Если этот параметр не задан, то поиск производится с начала строки. Поиск производится слева направо. Параметр задает режим сравнения при обработке строк (0 - двоичное, сравнение, 1 - текстовое сравнение)
InStrRev(str1, str2[, start[, compare]] )
То же самое, что функция , но поиск производится справа налево, т.е. возвращается номер последнего символа, с которого начинается вхождение подстроки в строку
Возвращает строку, полученную в результате конкатенации подстрок, содержащихся в массиве . Параметр задает символ, разделяющий подстроки (по умолчанию таким символом является пробел)
Возвращает строку, в которой все алфавитные символы преобразованы к нижнему регистру
Возвращает символов с начала строки
Возвращает число символов в строке
LTrim(str ), RTrim(str ), Trim(str )
Удаляет из строки начальные, конечные или и те и другие пробелы соответственно
Mid(str, start[, len] )
Возвращает из строки подстроку, которая начинается с позиции и имеет длину . Если параметр не указан, то возвращаются все символы, начиная с позиции до конца строки
Replace(expr, find, replacewith[, start[, count[, compare]]] )
Возвращает строку, которая получается из строки путем замен входящих в нее подстрок на подстроки . Параметр определяет число подстрок, которые будут обработаны таким образом (по умолчанию производятся все возможные замены). Параметр
Возвращает символов с конца строки
Возвращает строку, состоящую из пробелов
Split(Expr[, delim[, count[, compare]]] )
Возвращает массив строк, полученных в результате разбиения строки на подстроки. Параметр задает символ, разделяющий подстроки (по умолчанию таким символом является пробел). Параметр определяет число подстрок, которые будут обработаны таким образом (по умолчанию в массив записываются все подстроки). Параметр задает режим сравнения при работе со строками (0 - двоичное сравнение, 1 - текстовое сравнение)
StrComp(str1, str2[, compare] )
Возвращает число - результат сравнения строк и . Если , то возвращается -1; если , то возвращается 0; если , то возвращается 1. Параметр задает режим сравнения при работе со строками (0 - двоичное сравнение, 1 - текстовое сравнение)
Возвращает строку, состоящую из символов
Возвращает строку, в которой все алфавитные символы преобразованы к верхнему регистру

Для работы с датой и временем в VBScript имеется большой набор функций, основные из которых приведены в табл. П2.16.


Таблица П2.16. Функции для работы с датой и временем

Функция Описание
Возвращает текущую системную дату
DateAdd(interval, number, date )
Возвращает дату, отстоящую от даты на интервалов, заданных параметром , который может принимать следующие значения: "уууу" - год, "q" - квартал, "m" - месяц, "у" - день года, "d" - день, "w" - неделя, "ww" - неделя года, "h"- час, "m" - минута, "s" - секунда
DateDiff(interval, date1, date2[, firstdayofweek [, firstweekofyear]] )
Возвращает разницу в интервалах (возможные значения этого параметра те же, что и в функции ) между датами и . Параметр - это константа, показывающая, какой из дней недели следует считать первым (см. табл. П2.3, П2.4). Параметр - это константа, показывающая, какую неделю следует считать первой в году (см. табл. П2.4)
DatePart(interval, date [, firstdayofweek [, firstweekofyear]] )
Возвращает ту часть даты , которая соответствует параметру . Значения параметров и здесь те же, что и в функции
DateSerial(year, month, day )
Возвращает переменную подтипа , которая соответствует указанным году (параметр ), месяцу (параметр ) и дню (параметр )
Возвращает переменную подтипа , которая соответствует дате, заданной символьным параметром
Выделяет номер часа из даты или момента времени, заданных параметром . Возвращает целое число от 0 до 23
Возвращает , если параметр задает корректную дату, и в противном случае
Выделяет количество минут из даты или момента времени, заданных параметром . Возвращает целое число от 0 до 59
Выделяет номер месяца из даты, заданной параметром . Возвращает целое число от 1 до 12
MonthName(month[, abbr] )
Возвращает наименование для месяца с номером . Если логический параметр равен , то наименование месяца представляется в виде аббревиатуры, в противном случае - в полном виде
Возвращает текущие дату и время в виде, соответствующем региональным настройкам Windows
Возвращает текущее системное время
Возвращает количество секунд, прошедших с полуночи
TimeSerial(hour, minute, second )
Возвращает переменную подтипа , которая соответствует указанным часу (параметр ), минуте (параметр ) и секунде (параметр )
Возвращает переменную подтипа , которая соответствует времени, заданному символьным параметром
Weekday(date[, firstdayofweek] )
Возвращает целое число - день недели для даты, заданной параметром . Параметр - это константа, показывающая, какой из дней недели следует считать первым
WeekdayName(weekday[, abbr[, firstdayofweek]] )
Возвращает наименование для дня недели с порядковым номером . Если логический параметр равен , то наименование дня недели представляется в виде аббревиатуры, в противном случае - в полном виде. Значение параметра здесь то же, что и в функции
Выделяет год из даты, заданной параметром , и возвращает это целое число

синтаксический программирование оператор скрипт

В VBScript предусмотрено два типа процедур: процедуры (subroutines) - ключевое слово Sub, и функции (functions) - обозначаются ключевым словом Function. Единственное отличие - функции возвращают какое-либо значение. В обоих случаях процедуры - это блок программного кода. Определение процедуры или функции должно заканчиваться ключевыми словами End Sub или End Function Вызов процедуры или функции: Call имя_процедуры, слово Call можно пропустить. Параметры могут передаваться процедуре по ссылке или по значению. По ссылке - значение исходной переменной меняется, по значению - создается копия, а значение исходной переменной не меняется. По умолчанию в VBScript параметр передается по ссылке (ByRef). Если нужно передать по значению, можно использовать ключевое слово ByVal: Function имя_функции(ByVal имя_переменной)

Встроенные функции VBScript

  • 1. Функции преобразования и проверки типов данных VBScript (C-convert, I-Is(type)):
    • * CBool() - преобразует переменную к типу Boolean;
    • * CByte() - преобразует переменную к типу Byte;
    • * CCur() - преобразует переменную к типу Currency;
    • * CDate() - преобразует переменную к типу Date;
    • * CDbl() - преобразует переменную к типу Double;
    • * CInt() - преобразует переменную к типу Integer;
    • * CLng() - преобразует переменную к типу Long;
    • * CSng() - преобразует переменную к типу Single;
    • * CStr() - преобразует переменную к типу String;
    • * TypeName() - которая возвращает имя используемого типа данных;
    • * IsNumeric();
    • * IsDate();
    • * IsArray();
    • * IsEmpty();
    • * IsError();
    • * IsMissing();
    • * IsNull();
    • * IsObject();
    • * Hex() - преобразовывают десятичные данные в строковое представление шестнадцатеричных значений;
    • * Oct() - преобразовывают десятичные данные в строковое представление восьмеричных значений.
  • 2. Строковые функции (string functions) в VBScript:
    • * Asc() - возвращает числовой код символа;
    • * AscB() - возвращает первый байт числового кода символа;
    • * AscW() - возвращает код для символа в формате unicode;
    • * Chr(), ChrB(),ChrW() - возвращает символ по коду;
    • * InStr() - позволяет найти в теле строковой переменной последовательность символов и вернуть ее позицию. Поиск ведется с начала строки. Если ничего не найдено - возвращается 0;
    • * InStrRev() - выполняет то же самое что и InStr(), но поиск ведется с конца строки;
    • * Left() - позволяют взять из строковой последовательности указанное количество символов, считая слева;
    • * Right() - позволяют взять из строковой последовательности указанное количество символов, считая справа;
    • * Mid() - позволяют взять из строковой последовательности указанное количество символов, считая от указанной позиции;
    • * Len() - возвращает длину строки;
    • * LCase() - переводит строку в нижний регистр;
    • * UCase() - переводит строку в верхний регистр;
    • * LTrim() - убирает пробелы в начале строки;
    • * RTrim() - убирает пробелы в конце строки;
    • * Trim() - убирает пробелы в начале и конце строки;
    • * Replace() - производит замену подстроки на другую;
    • * Space() - возвращает строку указанной длины из пробелов;
    • * String() - возвращает строку указанной длинны из символов;
    • * StrComp() - сравнивает две строки;
    • * StrConv() - преобразует строку;
    • * StrReverse() - "переворачивает" последовательность символов строки в обратный порядок;
    • * Tab(). - вывод на экран указанного кол-ва символов табуляции (аналогично встроенной константе vbTab);
  • 3. Числовые функции (numeric functions) в VBScript:
    • * Abs() - возвращает модуль числа;
    • * Int() - возвращает ближайшее целое;
    • * Fix() - отбрасывает дробную часть;
    • * Round() - округляет до указанного количества знаков после запятой;
    • * Rnd() и команда Randomize - используются для получения случайных значений. Синтаксис: случайное_число=Int(минимум + (Rnd()*максимум)). Перед использованием Rnd() необходимо инициализировать генератор случайных чисел командой Randomize;
    • * Sgn() - возвращает информацию о знаке числа. Возвращает -1 для отрицательного, +1 для положительного и 0 для 0.
  • 4. Функции даты/времени (datetime functions) в VBScript:
    • * Date() - возвращает системную дату;
    • * Time() - возвращает системное время;
    • * Now() - возвращает дату и время. Установить их можно одноименными операторами, например: Date = #6/10/2009# (#Месяц/день/год#);
    • * DateAdd() - Добавляет к дате указанное число лет, месяцев и т.п.;
    • * DateDiff() - возвращает разницу между датами в единицах от лет до секунд;
    • * DatePart() - возвращает указанную часть даты (год, месяц, день недели и т.п.);
    • * DateSerial() - создает значение даты на основе передаваемых символьных значений. То же самое делает функция DateValue(), но при другом формате принимаемых значений. Аналогичным образом (для времени) работают TimeSerial() и TimeValue();
    • * Day() - возвращает день (аналогично соотв. DatePart());
    • * Year() - возвращает год;
    • * Month() - возвращает месяц;
    • * Weekday() - возвращает день недели;
    • * Hour() - возвращает час;
    • * Minute() - возвращает минуты;
    • * Second() - возвращает секунды;
    • * MonthName() - возвращает название месяца;
    • * Timer() - возвращает количество секунд, прошедших после полуночи.
  • 5. Функции форматирования (formatting functions) в VBScript:
    • * Format() - синтаксис Format(выражение, "формат"), например: Format(2.505, "#,##0.00"). Аналогично для остальных функций;
    • * FormatNumber();
    • * FormatCurrency();
    • * FormatDateTime();
  • 6. Функции для работы с массивами в VBScript:
    • * Array() - позволяет автоматически создать массив нужного размера и типа и сразу загрузить в него переданные значения;
    • * Filter() - позволяет на основе одного массива получить другой, отфильтровав в исходном массиве нужные нам элементы;
    • * LBound() - возвращают информацию о нижней границе массива (номер первого имеющегося в массиве значения);
    • * UBound() - возвращают информацию о верхней границе массива (номер последнего имеющегося в массиве значения)
    • * Join() - соединяет множество строк, составляющих массив, в одну строковую переменную. В качестве разделителя по умолчанию используется пробел, но можно указать и свой разделитель;
    • * Split() - функция, обратная Join().
  • 7. Функции для взаимодействия с пользователем в VBScript:
    • * MsgBox(), константы +
    • * InputBox().

Пример использования MsgBox

Response = MsgBox("Нажмите кнопку", vbYesNo)

If Response = vbYes Then

" если нажали кнопу Yes

" если нажали кнопу No

Так же для взаимодействия с пользователем используются метод WshShell.Popup(), команда Beep.