Чтение онлайн

ЖАНРЫ

Windows Script Host для Windows 2000/XP

Попов Андрей Викторович

Шрифт:

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

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

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

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

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

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

On Error Resume Next ' Включаем обработку ошибок времени выполнения

' Подключаем сетевой диск

WshNetwork.MapNetworkDrive Drive, NetPath

If Err.Numbero<>0 Then

 Mess="Ошибка при подключении диска " & Drive & " к " & NetPath &_

"Код ошибки: " & е.number & "Описание: " & е.description

 WshShell.Popup Mess, 0, "Подключение сетевого диска", vbCritical

Else

 ' Все в порядке

 Mess = "Диск " & Drive & " успешно подключен к " & NetPath

 WshShell.Popup Mess, 0, "Подключение сетевого диска", vbInformation

End If

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

On Error Goto 0
.

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

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

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

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

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

Функция Описание
Abs(x)
Возвращает абсолютное значение числа
х
Atn(x)
Возвращает арктангенс числа
х
Cos(x)
Возвращает
косинус числа
х
Exp(x)
Экспоненциальная функция, возвращает число е, возведенное в степень
х
Int(x)
Возвращает целую часть числа
х
Log(х)
Возвращает натуральный логарифм числа
х
Rnd[(х)]
Возвращает случайное число от 0 до 1
Round(х[, nvmdecimal])
Возвращает результат округления числа
х
с точностью до
numdecimal
знаков после запятой
Sgn(х)
Знаковая функция числа
х
Sin(х)
Возвращает синус числа
х
Sqr(х)
Вычисляет квадратный корень из числа
х
и возвращает полученное значение
Tan(x)
Возвращает тангенс числа
х

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

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

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

Функция Описание 
Asc(str)
 
Возвращает ASCII-код первого символа в строке
str
 
Chr(code)
 
Возвращает символ с ASCII-кодом
code
 
InStr([start,] str1, str2[, compare])
 
Возвращает индекс символа, с которого начинается первое вхождение подстроки
str2
в строку
str1
. Параметр
start
задает номер символа, с которого следует начинать поиск. Если этот параметр не задан, то поиск производится с начала строки. Поиск производится слева направо. Параметр
compare
задает режим сравнения при обработке строк (0 — двоичное, сравнение, 1 — текстовое сравнение) 
InStrRev(str1, str2[, start[, compare]])
 
То же самое, что функция
InStr
, но поиск производится справа налево, т.е. возвращается номер последнего символа, с которого начинается вхождение подстроки
str2
в строку
str1
 
Join(list[,delim])
 
Возвращает строку, полученную в результате конкатенации подстрок, содержащихся в массиве
list
. Параметр
delim
задает символ, разделяющий подстроки (по умолчанию таким символом является пробел) 
LCase(str)
Возвращает строку, в которой все алфавитные символы преобразованы к нижнему регистру
Left(str, len)
Возвращает
len
символов с начала строки
str
Len(str)
Возвращает число символов в строке
str
LTrim(str), RTrim(str), Trim(str)
Удаляет из строки
str
начальные, конечные или и те и другие пробелы соответственно
Mid(str, start[, len])
Возвращает из строки
str
подстроку, которая начинается с позиции
start
и имеет длину
len
. Если параметр
len
не указан, то возвращаются все символы, начиная с позиции
start
до конца строки
str
Replace(expr, find, replacewith[, start[, count[, compare]]])
Возвращает строку, которая получается из строки
expr
путем замен входящих в нее подстрок
find
на подстроки
replacewith
. Параметр
count
определяет число подстрок, которые будут обработаны таким образом (по умолчанию производятся все возможные замены). Параметр
compare
задает режим сравнения при работе со строками (0 — двоичное сравнение, 1 — текстовое сравнение)
Right(str, len)
Возвращает
len
символов с конца строки
str
Space(x)
Возвращает строку, состоящую из
х
пробелов
Split(Expr[, delim[, count[, compare]]])
Возвращает массив строк, полученных в результате разбиения строки
Expr
на подстроки. Параметр
delim
задает символ, разделяющий подстроки (по умолчанию таким символом является пробел). Параметр
count
определяет число подстрок, которые будут обработаны таким образом (по умолчанию в массив записываются все подстроки). Параметр
compare
задает режим сравнения при работе со строками (0 — двоичное сравнение, 1 — текстовое сравнение)
StrComp(str1, str2[, compare])
Возвращает число — результат сравнения строк
str1
и
str2
. Если
str1<str2
, то возвращается -1; если
str1=str2
, то возвращается 0; если
str1>str2
, то возвращается 1. Параметр
compare
задает режим сравнения при работе со строками (0 — двоичное сравнение, 1 — текстовое сравнение)
String(number, char)
Возвращает строку, состоящую из
number
символов
char
UCase(str)
Возвращает строку, в которой все алфавитные символы преобразованы к верхнему регистру

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

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

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

Функции для работы с массивами

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

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

Функция Описание 
Array(arglist)
 
Возвращает значение типа
Variant
, которое является массивом, составленным из элементов списка
arglist
. Отдельные элементы в
arglist
должны быть отделены друг от друга запятой 
IsArray(varname)
 
Возвращает
true
, если переменная
varname
является массивом, и
false
в противном случае 
LBound(arrayname[, dimension])
 
Возвращает наименьшее значение, которое может принимать индекс в массиве
arrayname
. Параметр
dimension
определяет, для какой именно размерности массива мы ищем это наименьшее значение (1 для первой размерности, 2 для второй размерности и т.д.). По умолчанию
dimension
равно 1 
UBound(arrayname[, dimension])
 
Возвращает наибольшее значение, которое может принимать индекс в массиве
arrayname
. Параметр
dimension
определяет, для какой именно размерности массива мы ищем это наибольшее значение (1 для первой размерности, 2 для второй размерности и т.д.). По умолчанию
dimension
равно 1 

Функции для работы с подтипами данных

При рассмотрении подтипов данных мы уже описывали функции конвертации, которые применяются для преобразования переменной к тому или иному подтипу (см. табл. П2.9).

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

Таблица П2.18. Функции для работы с подтипами данных

Функция Описание 
IsArray(expr)
 
Возвращает
true
, если параметр
expr
является массивом, и
false
в противном случае 
IsDate(expr)
 
Возвращает
true
, если параметр
expr
задает корректную дату (т. е. переменная expr является переменной подтипа
Date
), и
false
в противном случае 
IsEmptу(expr)
 
Возвращает
true
, если переменная
expr
объявлена, но не инициализирована 
IsNull(expr)
 
Возвращает
true
, если переменная
expr
не содержит никаких корректных данных 
IsNumeric(expr)
 
Возвращает
true
, если выражение
expr
может быть рассмотрено в качестве числа, и
false
в противном случае 
IsObject(expr)
 
Возвращает
true
, если переменная
expr
является указателем на внешний объект, и
false
в противном случае 
VarType(varname)
 
Возвращает числовое значение, соответствующее подтипу переменной
varname
(см. табл. П2.8)

Прочие функции

Опишем еще несколько часто используемых функций (табл. П2.19).

Таблица П2.19. Некоторые прочие функции

Функция Описание
CreateObject(servername.typename[, location])
Создает экземпляр объекта-сервера автоматизации и возвращает ссылку на него. Здесь
servername
— имя приложения, являющегося сервером;
typename
— тип или класс создаваемого объекта;
location
— сетевое имя компьютера, на котором будет создан объект
GetObject([pathname][, classname])
Возвращает ссылку на объект класса
classname
, который хранится в отдельном файле, путь к которому задается параметром
pathname
Hex(number)
Возвращает шестнадцатеричное представление (в символьном виде) числа
number
InputBox(prompt[, title] [, default] [, xpos][,ypos] [, helpfile, context])
Выводит на экран диалоговое окно со строкой ввода и кнопками OK, Отмена и возвращает введенную в этом окне символьную строку. Параметр
prompt
задает сообщение, которое печатается перед строкой ввода;
title
определяет заголовок диалогового окна;
default
— значение, которое выводится по умолчанию в строку ввода. Параметры
xpos
и
ypos
определяют координаты левого верхнего угла окна. В случае необходимости элементам диалогового окна можно сопоставить контекстно-зависимую помощь. Параметр
helpfile
задает путь к файлу помощи, а число
context
— идентификатор содержания помощи
MsgBox(prompt[, buttons] [, title] [, helpfile, context])
Выводит на экран диалоговое окно с сообщением и различными кнопками и возвращает результат нажатия на одну из кнопок (возможные варианты возвращаемых функцией значений приведены в табл. П2.6). Параметр
prompt
задает сообщение,
title
определяет заголовок диалогового окна. Числовой параметр
buttons
определяет, какие именно кнопки должны быть представлены в окне (возможные значения этого параметра приведены в табл. П2.5). Параметры
helpfile
и
context
имеют то же значение, что и в функции
InputBox
Oct(number)
Возвращает восьмеричное представление (в символьном виде) числа
number

Функции и процедуры пользователя

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

Sub…End Sub
. После названия процедуры в круглых скобках указывается список ее параметров, например:

Sub MyProcedure(Param1, Param2)

 Dim Sum

 Sum = Param1+Param2

End Sub

Если процедура не имеет параметров, то в скобках после имени ничего указывать не нужно:

Sub MyProcedure

 …

End Sub

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

MyProcedure 3,10

Во-вторых, можно использовать специальный оператор

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

Call MyProcedure(3, 10)

Поделиться с друзьями: