Использование переменных в языке VBscript требует их предварительного объявления. Это можно сделать явным способом – с помощью оператора Dim, например:
Dim Name 'объявили одну переменную Name Dim Name, Address, City, State 'объявили в одной строке три переменные
Использование переменных и их объявление неявным способом – подразумевает просто появлением имени внутри сценария. Такой способ не рекомендуется, так как может привести к ошибкам и делает его более сложным для отладки.
Во избежание использования неявных переменных можно в начале сценария прописать конструкцию Option Explicit, после чего, любую переменную, не заданную явно интерпретатор воспримет за ошибку.
При использовании в сценарии имен переменных, стоит придерживаться следующих правил:
- Название должно начинаться с латинской буквы
- В имени нельзя использовать пробелы
- Уникальность внутри своей сферы влияния
- Длина не больше 255 символов
Как и в других языках, в VBScript используется понятие тип данных (в зависимости от типа данных, может приниматься лишь тот или иной диапазон значений). Хотя в самом VBScript языке определен лишь один тип данных – variant (вариант), который в свою очередь хранит данные различного типа. Типы данных, которые могут сохраняться в варианте, называются подтипами. Ниже я привел список тех подтипов данных, которые используются в переменных VBScript.
Bool – логический тип, принимает значения True или False
Byte – только целые числа от 0 до 255
Currency – применяется для денежных величин
Date/Time – временной период от 1 января 100 года до 31 декабря 9999 года
Double – вещественные числа двойной точности
Empty – присваивается до присвоения данных
Error – хранит номер ошибки
Integer – только целые числа от -32768 до 32767
Long – длинное целое от -2147483648 до 2147483647
Null – присваивается, если есть недопустимое значение
Object – содержит ссылку на объект
Single – числа с плавающей точкой одинарной точности
String – строка
Что бы присвоить значение, не обязательно прописывать тип, присвоение происходит в следующем формате: Имя_переменной = значение, например:
Name = "My Name" Age = 100 Time = False Length= 24.45
Как уже упоминалось выше, переменные могут обладать сферой влияния, которая зависит от того, где именно они используются. Так, использование переменных внутри процедуры делает их внутренними, и они доступны только внутри этой процедуры, вне — объявленные вне процедур, называются глобальными и могут быть использованы в любом месте сценария. Пример ниже показывает как это работает:
'***************** 'variable_1.vbs '***************** Dim Name Name=20 Sub My_Age() Dim Age Age=100 End Sub Wscript.Echo "Глобальная: Name = " & Name & VbCrlf &_ "Внутренняя: Age = " & Age
Так, как переменная Age используется внутри процедуры My_Age, то функция Echo выведет лишь значение для Name, а для Age оно будет пустым.
Язык VBscript при возможности автоматически присваивает подтип используемым переменным, ниже я приведу простой пример, результат работы которого может быть не вполне логичным:
'***************** 'variable_2.vbs '***************** Dim result result = 100 + 23.5 'Получим 123,5 Wscript.Echo result result = 100 + "50" 'Получим 150 Wscript.Echo result result = "23.5" + "50" 'Получим 23.550 Wscript.Echo result result = 100 + "23,5" 'Получим 123,5 Wscript.Echo result result = 100 + "my_name" 'Ошибка!!! Несоответствие типа Wscript.Echo result
Сначала result будет присвоена сумма чисел 100 и 23.5, далее произойдет снова суммирование, так как интерпретатор VBscript автоматически если видит математическую операцию над двумя разными типами, то всегда старается произвести преобразование в пользу целого или вещественного числа. В третий раз произойдет конкатенация – процесс склейки двух строк. В четвертом случае, также произойдет суммирование, но, как мы видим, использование, переменной присваивается суммирование числа 100 и строки «23,5», если бы мы вместо «23,5» прописали «23.5» то возникла бы ошибка, как и в последнем случае – интерпретатор бы просто не смог привести используемые значения для переменной к целому или вещественному типу.
Для того, что бы при использовании переменной произвести преобразование типов, применяются ряд функций:
CBool(x) – преобразовать переменную x к типу Bool и аналогично: CByte(x) — Byte, CInt(x) — Int, CCur(x) – Currency, CLng(x) – Long, CSngl(x) – Single, CDbl(x) – Double, CDate(x) — Date/Time, CStr(x) – String.
Например:
'***************** 'variable_3.vbs '***************** Dim var_1, var_2, result var_1=100 var_2="50" var_3=121923 result = CStr(var_1) + var_2 'Получим 10050 Wscript.Echo result Wscript.Echo CDate(var_3) '23.10.2233