Урок 4 по VBScript: преобразование типов данных

Урок 4 по VBScript: преобразование типов данных Программирование на VBSCRIPT

В данной статье я хотел бы рассмотреть, как происходит преобразование типов vbs, и какие функции используются для проверки и преобразования типов данных vbs. Как уже упоминалось, в прошлой статье, при попытке сложить число 100 и строку «100» мы получим результат 200, так как язык VBScript автоматически приводит строку в число. Если сценарий маленький, то такие «тайные» преобразования типов vbs даже полезны, но, если код разрастётся до огромных размеров, то это может сильно помешать. Поэтому, начнём с того, что рассмотрим функции, которые используются для явного приведения типов данных в сценария VBScript.

За приведения одного типа к другому отвечают следующие функции:

CBool(x) – позволяет привести значение переменной x к логическому Bool. В случае, если x равно 0, то функция вернёт False (ложь), иначе True (истина).

'************************
'CBool.vbs
'пример работы с функцией CBool
'************************
Dim A, B
 
B="строка"
 
A = CBool(100)    'Истина
MSgBox(A)
A = CBool(0)      'Ложь 
MSgBox(A)
A = CBool("True") 'Истина 
MSgBox(A)
A = CBool("FALSE") 'Ложь
MSgBox(A)
A = CBool(B)       'Вернёт ошибку!!!

CByte(x) — позволяет привести значение x к целому Byte. Если x — строка, то  за преобразование отвечают региональные настройки операционной системы. Значение x не должно превышать диапазон 0…255, иначе произойдёт ошибка. Дробные числа будут округляться:

'************************
'CByte.vbs
'преобразование типов vbs
'************************
Dim A, B
 
B=12345
 
A = CByte(100)        '100
MSgBox(A)
A = CByte(53.7899)    '54 
MSgBox(A)
A = CByte("100")      '100 
MSgBox(A)
A = CByte(B)          'Вернёт ошибку!!!
MSgBox(A)

CInt(x) — приводит значение переменной x к целому Int. Диапазон не должен превышать -32 768…32 767. Правила соответствуют предыдущей функции.

'************************
'CInt.vbs
'Пример работы с функцией CInt
'************************
Dim A, B
 
B=123453333
 
A = CInt(100)                       '100
MSgBox(A)
A = CInt(30200.7899)                '30201
MSgBox(A)
A = CInt("-15134")                  '-15134
MSgBox(A)
A = CInt(B)                         'Вернёт ошибку!!!
MSgBox(A)
Функции vbs - работа со строками, дата, примеры скриптов

CCur(x) – позволяет привести значение x к Currency, диапазон -922 337 203 685 477.5808…922 337 203 685 477.5807:

'************************
'CCur.vbs
'преобразование типов vbs
'************************
Dim A, B
 
B=123453333
 
A = CCur(1234.2345678)        '1234.2346
MSgBox(A)
A = CCur("-35689")            '-35689
MSgBox(A)
A = CCur(B)                   '123453333
MSgBox(A)

CLng(x) – функция дает возможность привести значение переменной x к Long:

'************************
'CLng.vbs
'преобразование типов vbs
'************************
Dim A, B
 
B=123453333
 
A = CLng(1234.2345678)       '1234
MSgBox(A)
A = CLng("-35689")           '-35689
MSgBox(A)
A = CLng(B)                  '123453333
MSgBox(A)

CSng(x) – позволяет привести переменную x к Single:

'************************
'CSng.vbs
'преобразование типов vbs
'************************
Dim A, B
 
B=12345.3333
 
A = CSng(1.234E-23)              '1.234E-23
MSgBox(A)
A = CSng("-1,345")               '-1,345
MSgBox(A)
A = CSng(B)                      '12345.33
MSgBox(A)

CDbl(x) – функция дает возможность преобразовать значение x к Double

'************************
'CDbl.vbs
'преобразование типов vbs
'************************
Dim A, B
 
B=12345.3333
 
A = CDbl(1.234E-23)              '1.234E-23
MSgBox(A)
A = CDbl("-2221,345")            '-2221,345
MSgBox(A)
A = CDbl(B)                      '12345.3333
MSgBox(A)

CDate(x) – Позволяет получить значение Date. Значение x может являться строкой,  числом или форматом даты (например, #20/12/1988#). Так, если есть дробное число, то целая часть будет соответствовать числу дней, начиная с 30 декабря 1899 года, если целая часть негативная, то мы получим более ранние даты. Дробная часть конвертируется во время суток, начиная с полуночи:

'************************
'CDate.vbs
'преобразование типов vbs
'************************
Dim A, B
 
B=#30/12/1986#
 
A = CDate(0)               '0:00:00
MSgBox(A)
A = CDate(-1)              '29.12.1899
MSgBox(A)
A = CDate(1)               '31.12.1899
MSgBox(A)
A = CDate("30.12.1981")           '30.12.1981
MSgBox(A)
A = CDate("30/12/1983")           '30.12.1983
MSgBox(A)
A = CDate(1.33)                   '31.12.1899 7:55:12
MSgBox(A)
A = CDate(B)                      '30.12.1986
MSgBox(A)

CStr(x) – приводит к String.

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

Хорошо, теперь стоит сделать одно уточнение, при использовании данных функций, меняется только значение переменной vbscript, а не объём, который она занимает в оперативной памяти. То есть, как бы вы не делали преобразование типов данных, то они и так будут иметь тип Varian – данный тип занимает 16 байт (для платформы х86) или 24 байта (для платформы х64).

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