Урок 3 по VBScript: Типы данных

Урок 3 по VBScript: Типы данных Программирование на VBSCRIPT

В данной статье мы рассмотрим типы данных vbs. Большинство языков программирования требует явного указания типа для каждой переменной, мы как бы говорим программе: вот в этой переменной хранится число 200, ей нужно присвоить тип byte и выделить 1 байт памяти, а тут у нас число 324,345, тут нужен тип real и 4 байта памяти. Типы данных vbs избавлены от этой математики, так как тут, язык автоматически присваивает всем переменным тип Variant.

Давайте рассмотрим простенький скрипт:

'*********************************'type_1.vbs'Типы данных vbs'********************************* dim var_1, var_2, var_3 var_1 = 125var_2 = "125" var_3 = var_1 + var_2     'Получим 250MsgBox (var_3) var_1 = "первая "var_2 = "строка" var_3 = var_1 + var_2 'Получим первая строкаMsgBox (var_3) var_1 = 200var_2 = "строка" var_3 = var_1 + var_2 'получим ошибкуMsgBox (var_3)

У языка VBScript есть тенденция автоматически преобразовывать содержимое переменной к нужному типу (при возможности). Сначала var_1 содержит число 125, а var_2 – строку «125», переменная var_3 будет содержать сумму переменных var_1 и var_2. Тут интерпретатор языка автоматически приводит строку к числу. После, мы присвоили обоим переменным строковые значения, и вместо сложения произошла конкатенация (объединение строк). Уже в конце, var_1 снова содержит число 200, а var_2 – строковое значение, но тут суммирования не происходит, а возникает ошибка.

Хорошо, vbscript поддерживает лишь один тип Variant, но в нём содержаться встроенные vbs типы данных, переменная приводится к ним автоматически, без нашего участия. Давайте сначала познакомимся с ними, а потом напишем сценарий-пример.

Типы vbs с заданными значениями

Основные типы данных vbs, которые входят в состав типа Variant:

  • Empty – присваивается, если мы объявили переменную, но еще ничего ей не присвоил;
  • Null – присваивается, если мы присвоили значение Null;
  • Byte — целое число от 0 до 255;
  • Integer — целое число от -32 768 до 32 767;
  • Long — большое целое число от -2 147 483 648 до 2 147 483 647;
  • Currency — число с фиксированной точкой в диапазоне от -922 337 203 685 477.5808 до 922 337 203 685 477.5807;
  • Single – число с плавающей точкой одинарной точности. Для  отрицательных значений допустимый диапазон   от -3.402823E38 до -1.401298E-45. Для положительных – от 1.401298E-45 до 3.402823E38;
  • Double — число с плавающей точкой двойной точности. Для  отрицательных значений допустимый диапазон от -79769313486232E308 до -4.94065645841247E-324. Для  положительных — от 4.94065645841247E-324 до 1.79769313486232E308;
  • String – последовательность символов. Переменной длины (примерно до 2 млрд. символов) и фиксированной длины (примерно до 65 400 символов));
  • Date — временный интервал от 01.01.100 до 31.12.9999;
  • Boolean — логический тип данных vbs, хранит значения True и False;
  • Object — является ссылкой на объект;
VBScript: Empty, Null, String Boolean и Object типы

Хорошо, вы скажете, всё это прекрасно, нокак определить vbs типы дынных, которые содержит переменная? Всё просто, для этого можно использовать функцию TypeName, в качестве параметра ей надо передать имя переменной. Но тут есть один подводный камень:

'*********************************'type_2.vbs'Типы данных vbs'********************************* dim var_str var_str="строка"MsgBox (TypeName(var_str))    'получим stringMsgBox (VarType(var_str))       'получим 8

В данном примере, переменная var_str содержит строку, ей автоматически присваивается vbs тип данных – String, используя функцию TypeName мы получим string, то есть – строка. Если мы вместо функции TypeName будем использовать функцию VarType, то получим не названия типа данных vbs, а число, так как данным vbs соответствуют константы, но отображаются не имена констант, а их значения. Так, типу String соответствует константа vbString, её числовое значение 8.

Ниже я привел список констант для определения типов данных vbs и их числовые значения, что чему соответствует ясно и из названия:

  • vbEmpty — 0
  • vbNull — 1
  • vbInteger — 2
  • vbLong — 3
  • vbSingle — 4
  • vbDouble — 5
  • vbCurrency — 6
  • vbDate — 7
  • vbString — 8
  • vbObject — 9
  • vbError — 10
  • vbBoolean — 11
  • vbVariant — 12
  • vbDataObject — 13
  • vbDecimal — 14
  • vbByte  -17
  • vbArray – 8204 (хотя может вернуть и другое число)

Что бы показать вам, как назначаются vbs типы данных, мы рассмотрим следующий скрипт:

'*********************************'type_3.vbs'Типы данных vbs'********************************* dim var_empt                  'Emptydim var_null                    'Nulldim var_byte                   'Bytedim var_int                                 'Integerdim var_long                   'Longdim var_curr                    'Currencydim var_date                   'Datedim var_boll                    'Booleandim var_str                                  'Stringdim var_obj                     'Objectdim var_arr(3)                 'Arraydim var_list                                 'Будут хранить список var_list="" var_null = Nullvar_byte = 0var_int = -2345var_long = 147483648var_curr = 5.345var_date = #30/12/1986#var_boll=False 'Ссылка на объектset var_obj=CreateObject("Scripting.FileSystemObject") var_list=var_list & "var_empt " & vbTab & TypeName(var_empt) & vbcrlfvar_list=var_list & "var_null " & vbTab & vbTab & TypeName(var_null) & vbcrlfvar_list=var_list & var_byte & " " & vbTab & vbTab & TypeName(var_byte) & vbcrlfvar_list=var_list & var_int & " " & vbTab & vbTab & TypeName(var_int) & vbcrlfvar_list=var_list & var_long & " " & vbTab & TypeName(var_long) & vbcrlfvar_list=var_list & var_curr & " " & vbTab & vbTab & TypeName(var_curr) & vbcrlfvar_list=var_list & var_date & " " & vbTab & TypeName(var_date) & vbcrlfvar_list=var_list & var_boll & " " & vbTab & vbTab & TypeName(var_boll) & vbcrlfvar_list=var_list & "Массив" & vbTab & vbTab & VarType(var_arr) & vbcrlfvar_list=var_list & "Объект" & vbTab & vbTab & VarType(var_obj) MsgBox (var_list)

Помимо функции TypeName можно использовать:

VarType – аналог TypeName, просто вместо названия будет возвращаться число, IsArrayIsDateIsEmptyIsNullIsNumeric и IsObject позволяют проверить типы данных vbs на их логическое соответствие.

Скачать архив с примерами

Рассматривая результат работы данного примера можно заметить, что для числа 0 вместо ожидаемого типа byte, функция вернула vbs тип данныхInteger, так как byte входит в диапазон integer. Для переменной var_arr, которая хранит массив, нам вернуло variant(), а для переменной var_obj функция TypeName вернула имя объекта FileSystemObject. Что бы явно указать типы данных vbs стоит использовать специальные функции, с ними мы познакомимся в следующем уроке.

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