Здесь я попробую показать примеры скриптов, чтобы понятно было, что и откуда берется. Писать скрипты можно в блокноте, но это не совсем удобно. Я лично использую Notepad++. Это удобно. Запомнить все, и даже большую часть материала невозможно, поэтому я написал для себя небольшую шпаргалку. Если что — я знаю где искать. Пригодится )))

Структура скрипта

Классическая схема скрипта. Но как всегда — есть нюансы. Процедуры и функции могут располааться как до так и после основной части скрипта.

VBScript процедуры и функции

Как и в большинстве языков программирования, в VBScript можно использовать процедуры и функции, которые позволят разделить код на логически отдельные подпрограммы и вызывать их, если нужно несколько раз.

Процедуры в VBScript

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

Пример процедуры с параметрами:

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

Вызов процедуры осуществляется одним из 2-х способов:

  • Call <имя_процедуры> (Param1, Param2, Param3)
  • <имя_процедуры> Param1, Param2, Param3

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

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

  • ByRef — передача параметра по ссылке (при изменении параметра внутри процедуры, исходная переменная, которая передавалась, так же будет изменена)
  • ByVal — передача параметра по значению (создается копия значения и изменение параметра внутри процедуры не изменяет исходную переменную, которая передавалась в процедуру)

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

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

Функции в VBScript

Написание функции начинается с ключевого слова Function, затем название функции, перечисление передаваемых в нее параметров, код самой функции и заканчивается ключевыми словами End Function обозначающими конец функции.

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

Пример функции возвращающей значение:

Функцию можно использовать как процедуру, при этом параметры в нее можно передавать по тем же правилам, что и для процедуры и точно так же можно использовать ByVal и ByRef для передачи параметров по значению и по ссылке (по ссылке передавать нужно в том случае, если ты хочешь получить несколько значений возврата, т.е. на глобальные переменные).

Если возможностей процедур и функций не достаточно, можно на VBScript написать классы.

Классы в VBS примеры

В языке VBS можно использовать классы, правда не в полной мере, т.к. нет механизмов наследования и полиморфизма.

Пример объявления и использования класса в VBS:

В классах можно использовать конструкторы и деструкторы:

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

Имитация наследования класса в VBS

Как было сказано выше, в VBS нет наследования классов, но ее можно имитировать. Для этого в классе-потомке нужно продублировать методы родительского класса, например, так:

Передача параметров в конструктор класса

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

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

При установлении или возвращении свойства класса можно предварительно выполнять различные действия по контролю их правильности или по их модификации. Осуществляется это с помощью Property Let и Property Get. Следующий пример это демонстрирует:

Включение в программный код других файлов (include)

Классы можно описывать в отдельных файлах, тем самым инкапсулируя (объединяя) логику и данные одного вида в отдельный класс-файл. Однако, встает проблема: как подключать эти файлы в общий программный код? Чтобы включить в код другой файл, можно воспользоваться executeGlobal и чтением файлов. Для демонстрации имитации include, ниже приведу текст двух файлов, по которым всё будет понятно.

Текст файла MainProgram.vbs (основная программа)

Текст файла MyClass.vbs (подключаемый файл с классом)

Обработка ошибок

VBScript имеет весьма скудные встроенные средства обработки ошибок времени выполнения, которые сводятся к двум операторам:

Первый – отключает обработку ошибок (состояние по-умолчанию). Если ошибка случится, то на экран будет выдано сообщение и выполнение текущей процедуры или функции прекратится.

При включенном режиме On Error Resume Next, ошибка не приводит к прерыванию выполнения кода и программист имеет возможность самостоятельно разобраться с ней. Информация об ошибке содержится в глобальном встроенном объекте Err. Ниже приводится описание его свойств и методов:

Description Текстовое описание ошибки.
HelpContext
  Номер топика в файле справки, который будет открыт,
  если пользователь воспользуется клавишей F1 в окне сообщения об ошибке.
HelpFile  Имя файла справки.
Number Целочисленный номер ошибки. 0 означает отсутствие ошибки.
Source Наименование приложения, в котором произошла ошибка.
Методы:
Clear Очищает все свойства объекта, сбрасывает информацию об ошибке. Обратите внимание, что объект Err автоматически очищается при выполнении следующих операторов: On Error Resume Next, Exit Sub, Exit Function.
Raise Генерирует ошибку времени выполнения. Полный формат вызова: Err.Raise(number, source, description, helpfile, helpcontext).
Только первый параметр (номер ошибки) является обязательным. Если опущены, значения остальных параметров подставляются из соответствующих свойств объекта.

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

 

Циклы

Call имя_событие Call but_onclick Вызов подпрограммы
Do
.
Loop Until условие
Do
a=a+1
Loop Until a>=5
Выполняет код хотя бы один раз, пока условие не будет истинным
Do
.
Loop While условие
Do
a=a+1
Loop While a =5
a=a+1
Loop
Повторяет выполнение кода, пока условие не станет истинным
Do While условие
.
Loop
Do While a 1 Then alert»больше» Выполнение кода при выполнении условия
Select Case X
Case значение1
действие
Case значение2
действие2
.
End select
Select Case X
Case 10
alert»x=10″
Case 20
alert»x=20″
End select
Выборочное выполнение кода при совпадении значения

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

Они встроены в язык )))

MsgBox

В Таблице  представлены некоторые константы, сумма которых определят вид «значка», а также наличие кнопки диалогового окна, создаваемого с помощью MsgBox.

Константа

Значение

Описание

Группа 1

 

Появляющиеся кнопки

VbOkOnly

0

Кнопка Ok

VbOkCancel

1

Кнопки Ok и Cancel

VbAbortRetryIgnore

2

Кнопки Abort, Retry и Ignore

VbYesNoCancel

3

Кнопки Yes, No и Cancel

 

 

Группа 2

 

Появляющийся значок

VbCritical

16

Критический значок

 

 

Группа 3

 

Кнопка выбранная по умолчанию

VbDefaultButton2

256

Вторая кнопка

 

 

Группа 3

 

Вывод на экран

VbSystemModal

4096

Окно выводится поверх всех открытых окон

Полный список параметров доступен в Visual Basic Script Reference.Сумма значений констант может быть введена следующим образом:

VbYesNoCancel+VbCritical+VbDefaultButton2+VbSystemModal

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

Mexanik

Пример:

K=MsgBox( «Ответ», vbYesNoCancel+vbcritical+vbDefaultButton2+vbSystemModal, «привет»)

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

Msgbox «Ответ»,vbyesnocancel+vbcritical+vbdefaultbutton2+vbSystemmodal,»привет»

То есть нужно опустить скобки.

Перечень возвращаемых значений

Константа

Значение

Нажатая кнопка

VbOk

1

Ok

VbCancel

2

Cancel

vbAbort

3

Abort

vbRetry

4

Retry

vbIgnore

5

Ignore

vbYes

6

Yes

vbNo

7

No

InputBox

Используется для ввода данных пользователем.

Синтаксис:

MyVar=InputBox(Текст [,Заголовок] [,Умолчание][,поз- X] [,поз- Y])

 

Текст – Необходимый параметр, определяющий сообщение, которое выводится в диалоговом окне.

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

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

Поз-Х и поз-Y – Необязательные параметры, определяющие положение верхнего левого угла диалогового окна.

MyVar – переменная, в которую передается введённая пользователем строка.

Пример:

User_Input = InputBox (“Введите имя файла: ”, “Создать файл”, “NewFile”,100,200)

Замечание: Если необязательный параметр не задан, VBScript использует значение по умолчанию. Чтобы опустить необязательный параметр, надо оставить его место между двумя запятыми пустым.

Mexanik

Комментарии

Добавление комментариев к сценариям считается хорошим тоном. Действительно, с комментариями написанная программа становится более понятной и удобной, другими словами, более читабельной. Кроме того, если вы хотите заставить VBScript проигнорировать строку или часть оператора, можно просто закомментировать этот оператор. На VBScript комментарии помечаются одинарной кавычкой (‘) или оператором REM. Обнаружив этот символ, интерпретатор VBScript игнорирует остаток строки. Обе приведённые ниже строки содержат комментарии:

Эта строка состоит из одного лишь комментария

MsgBox “Hello, World!” ‘ Комментарий в конце строки

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

Mexanik

 

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

В VBScript используются такие операции конкатенации строк, как + и &

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

n=300 ‘ присваиваем переменной значение 300

Функция CStr преобразует числовое значение переменной n в строковое, которое

можно сложить с другой строкой, а результат присвоить переменной s

s=CStr(n)+» лет Санкт-Петербургу!!!»

msgbox s ‘ выводим в диалоговом окне значение строки s

Конкатенация строк при помощи операции + не самая хорошая практика. Операция + складывает два операнда (если последние – строки, происходит операция конкатенации). Лучший подход – объединить строки при помощи операции &, так как при объединении операцией & двух значений разного формата VBScript автоматически преобразует типы без использования функции CSrc. Пример:

n=300

s=n&» лет Санкт-Петербургу!!!» ‘ Ошибка типов в данном примере не возникнет

msgbox s

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

возвращают переменной числовое значение. Примеры арифметических операций приведены в Таблице 5:

Операция

Описание

Пример

^

Возведение в степень

x=y^показатель

+

Сложение

x=a+b

Вычитание или знак отрицательного числа

x=-30 или x=a-50

*

Умножение

x=a*40

/

Деление

x=a/b

\

Целочисленное деление

x=a\b

Mod

Остаток от деления

x=a Mod b

Логические операции

возвращают переменной значение типа Bool. Примеры логических операций приведены в Таблице 6:

Операция

Описание

Пример

Not

НЕ

x=Not y

And

И

x=a And b

Or

ИЛИ

x=a Or b

Xor

Исключающее ИЛИ

x=a Xor b

Eqv

Эквивалентность

x=a Eqv b

Imp

Импликация

x=a Imp b

Операции сравнения

служат для сравнения выражений (в которых могут быть числа, строки и т.д.). Смотри Таблицу 7.

 

Описание

Пример

=

Равно

a=b

<=

Меньше или равно

a<=b

>=

Больше или равно

a>=b

<>

Не равно

a<>b

Приоритет операций:

При вычислении значений выражений, состоящих из нескольких операций, синтаксический анализатор VBScript использует старшинство операций, которое приведено в Таблице 8. Чем меньше номер, тем больше приоритет.

Операторы

Номер

^ (возведение в степень)

1

— (знак отрицательного числа)

2

*

3

/

4

\

5

Mod (остаток от деления)

6

+ (сложение)

7

— (вычитание)

8

+ (конкатенация)

9

& (конкатенация)

10

=, >,<, >=, <=, <>

11

And

12

Or

13

Xor

14

Eqv

15

Imp

16

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

Mexanik

 

Понятие оператора

Оператор — это единица исполнения программы. Программы состоят из последовательности операторов. Операции сравнения приведены ниже:

Возвращает true тогда и только тогда, когда оба аргумента равны

=

Возвращает true тогда и только тогда, когда оба аргумента неравны

<>

Возвращает true тогда и только тогда, когда левый аргумент меньше правого

<

Возвращает true тогда и только тогда, когда левый аргумент больше правого

>

Возвращает true тогда и только тогда, когда левый аргумент меньше или равен правому

<=

Возвращает true тогда и только тогда, когда левый аргумент больше или равен правому

>=

 

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *