|
Типы данных в VBScript
|
|||
---|---|---|---|
#18+
Простите за ламерский вопрос. Допустим у меня есть переменная s, к которой применялась функция trim. Она иммеет строковой тип, но внутри нее только цифры. Я хочу ее сравнить с числом, но сравнение происходит неверно. Как можно преобразовать s к целому типу? Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2001, 13:29 |
|
Типы данных в VBScript
|
|||
---|---|---|---|
#18+
VBScript - язык без типизации переменных (т.е. все они по-умолчанию являются типом Variant). У этого типа есть "под-типы", которые можно проверить функцией VarType(<имя-переменной>. Кроме всего прочего - VBScript активно использует "неявное" приведение типов (т.е. - он сам себе "умно" решает - как складывать строчку и число при сложении, и что в результате получится, но при сравнении - похоже он про это "забывает"). Если у вас установлен Windows Script Host (он по-умолчанию устанавливается в W2K) - то скопируйте нижележащий текст в текстовый файлик с любым именем и расширением .WSF, а потом в командном окошке запустите программку CSCRIPT.EXE с параметром <имя-файла>.WSF Если Windows Script Host не установлен сразу - возьмите его тут: http://www.microsoft.com/msdownload/vbscript/scripting.asp (Рекомендую... о-о-о-очень удобное средство для тестирования любых кусков кода на VBScript, и/или - написания простых "утилит" для "личного пользования") <package> <job id="StrConv"> <?job debug="true"?> <script language="VBScript"> WScript.Echo "String convertion" dim s, i s = "123" i = 123 WScript.Echo "s = ""123""" WScript.Echo "i = 123" WScript.Echo "VarType(s) = " & VarType(s) WScript.Echo "VarType(i) = " & VarType(i) WScript.Echo "Implicit string (s & i) = " & (s & i) WScript.Echo "Implicit integer (s + i) = " & (s + i) WScript.Echo "Explicit convertion (Cstr(Cint(s) + i)) = " & (Cstr(Cint(s) + i)) WScript.Echo "Direct comparition (iif(s = i,""True"",""False"")) = " & (iif(s = i,True,False)) WScript.Echo "Convert comparition (iif(Cint(s) = i,""True"",""False"")) = " & (iif(Cint(s) = i,True,False)) function iif(a,b,c) if a then iif = b else iif = c end if end function </script> </job> </package> ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2001, 06:32 |
|
Типы данных в VBScript
|
|||
---|---|---|---|
#18+
Отвечу на сам вопрос - используй функцию Int() Например Dim a Dim b a=5 s=RTrim("5 ") If Int(a)=Int(b) Then Response.Write("равенство") End If Хорошая шпаргалка по функциям VBScript есть здесь http://prosto.pp.ru/Docum/DocumShow.asp?DocumID=81 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.09.2001, 10:38 |
|
|
start [/forum/topic.php?fid=60&fpage=426&tid=2171686]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
25ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 137ms |
0 / 0 |