VBscript: Использование переменных

Использование переменных в языке 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

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий