工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型

  说到编程语言,老是绕不开数据类型,由于数据类型决定了数据能够进行什么样的操做。同时数据类型html

从广义上来讲是一种数据结构,在过程式编程的过程当中,曾经有过这样一种说法:算法

程序 = 数据结构 + 算法

  可见数据类型的重要性。大致来讲,编程语言有三种: 强类型语言, 弱类型语言,介于二者之间的语言。编程

强类型语言要求变量定义的时候必须明确数据类型,弱类型语言不要求在变量定义时明确数据类型。数据结构

1、强类型语言、弱类型语言编程语言

  咱们所知的C语言系的语言都要求变量定义时明确数据类型,例如C语言、C++、Java语言等都是强类型函数

语言。 而VBS等脚本语言,则是弱类型的语言。 这就决定了vbs定义变量时不须要明确数据类型。测试

  下面是各类语言定义变量时的语法。spa

//我是C语言,我是强类型语言

//定义变量时肯定数据类型
int  nAge;   

 

//我是C++, 我也是强类型语言

class A
{

};

//类实例化的时候须要指定对象的类型
A  objectA;

 

//我是Delphi的Pascal, 我也是强类型语言

//定义变量须要指定类型
var 
    nPage:integer;

 

'我是vbs,我是弱类型语言

'定义变量不须要指定数据类型
Dim varTest

 

2、vbs的数据类型code

  这篇文章咱们简单的来描述一下vbs中数据类型的相关内容。htm

'vbs中的数据类型
'vbs脚本中的数据只有一种数据类型,就是variant
'能够将vbs变量当作一个具备AI功能的容器,能够识别不一样的数据类型
'更准确的是:
'一、vbs只有一种数据类型variant
'二、vbs变量的数据类型都对应一个子类型
'三、能够将variant当作一个基类,子数据类型当作派生类,
'四、vbs是具备OOP特性的一种脚本编程语言
'五、vbs变量在同一时刻,只能表示一种数据类型,或者说只能存储一种
'   数据类型的数据; 不能既存储Long型又同时存储string型字符串
'六、vbs变量能够自动为存储的数据选择合适的数据类型
'七、这里须要说道赋值运算,当一个变量第一次赋值的时候,vbs就假定
'   这个变量的数据类型为赋值时的子类型。除非再一次赋值,不然就一直
'   保持第一次赋值的子类型不变



'vbs中的数据类型检测函数
'一、vartype 函数, 这个函数返回数据类型的常量信息
'二、typename 函数,这个函数返回数据类型的字符串信息
Dim var
var = 10
MsgBox VarType(var)
MsgBox TypeName(var)

var = "volcanol"
MsgBox VarType(var)
MsgBox TypeName(var)

'关于输入对话框InputBox的输入处理
'InputBox输入对话框返回的是字符串
Dim strDataType
MsgBox TypeName(InputBox("请输入最大年龄的数值","最大年龄","150"))

'这里须要注意isnumeric函数检查输入的变量是否都是数字
'若是都是由 0-9 之间的数字组成的,那么返回True,不然返回false
'这一点须要注意
If IsNumeric(InputBox("测试输入的值是不是数值","输入数值")) Then
    MsgBox "测试isnumeric函数的做用"
End If


'在vbs中也有与C语言中同样的类型转换:强制类型转换、隐式类型转换
'强制类型转换经过函数实现
'隐式类型转换vbs会自动完成
'再看下面的例子,由于nMaxAge要进行算术减法,因此vbs脚本引擎会将
'nMaxAge解释为一个int型数据
Dim nMaxAge
Dim nMinAge
Dim nDiffAge
'第一次赋值的时候,nMaxAge是string类型
nMaxAge = InputBox("请输入最大年龄的数值","最大年龄","200")
'第一次赋值的时候
nMinAge = 0
MsgBox "第一次赋值后 nMinAge的类型是:" & TypeName(nMinAge)
'这个地方要进行计算,- 须要的是数字类型,这个地方表达式中
'会将 nMaxAge 的 string类型隐式类型转换为 double 类型,
'而后再与nMinAge 进行计算. 须要注意的是隐式类型时的要点。
nDiffAge = nMaxAge - nMinAge
MsgBox nDiffAge
MsgBox "nDiffAge数据类型是:" & TypeName(nDiffAge)

'下面表达式的类型是integer
MsgBox "1 + 2 表达式的类型是: " & TypeName(1+2)


'日期和时间类型
MsgBox Date()
MsgBox TypeName(Date())
MsgBox Time()
MsgBox TypeName(Time())

'注意日期类型常量的使用两个##符号引用起来的一个字符串,
'就和下面的例子同样
MsgBox TypeName(#2018/11/23#)
MsgBox "日期的数值是:" & CLng(#2018/11/23#)
MsgBox "数字65535对应的日期是:" & CDate(65535)
MsgBox "数字0对应的日期是:" & CDate(0)
MsgBox #1970/1/1#


'注意时间的常量与日期常量的不一样
MsgBox TypeName("14:19:29")


'前面咱们说过 & 和 + 均可以进行字符串的链接
'由于 + 符号还能够做为加法运算符,所以这里须要注意在
'使用过程当中的隐式类型转换
'例如咱们想输出一个 100234 的字符串
Dim strTest
Dim nTest
strTest = CStr(100)
nTest = 234
'不能输出字符串
MsgBox strTest + nTest
'能够输出字符串
MsgBox strTest & nTest

'*******************************************
' + 符号的规则
' 一、若是两边都是数字,按照数字计算
' 二、若是一边是数字类型,则看另外一边是否能隐式类型转换为数字
'    若是能隐式类型转换,则按照数字计算加法求和, 不然就报错
'
' 三、若是两边都是字符串,那么就链接字符串
'
' 四、字符串类型最好用 & 进行链接


'Empty 和 NULL
'若是一个变量未进行初始化则其类型为Empty
Dim varEmpty
MsgBox TypeName(varEmpty)
'下面的函数调用也进行了隐式类型转换,将empty类型的变量转换为string类型
MsgBox varEmpty

If IsEmpty(varEmpty) Then
    MsgBox "varEmpty变量未初始化"
End If

'这里还须要注意的是empty这个常量,
varEmpty = Empty
If IsEmpty(Empty) Then 
    MsgBox "varEmpty = Empty 赋值后,已经初始化"
Else
    MsgBox "varEmpty = Empty赋值后,已经初始化,这一段不执行"
End If

If varEmpty = Empty Then
    MsgBox "varEmpty = Empty 后,其值就是Empty,执行这一段"
Else
    MsgBox "varEmpty = Empty后,其值是Empty,逻辑结果为真,这一段不执行"
End If


Dim varNull 
varNull = Null
MsgBox TypeName(varNull)
'下面的语句不能执行,这个地方就是NULL和empty的区别
'并且通常只有显示的给变量赋值为NULL,变量的值才是NULL
'MsgBox varNull

If IsNull(varNull) Then
    MsgBox "varNull变量的值是NULL"
End If

If IsEmpty(varNull) Then
    MsgBox "varNull变量没有初始化"
Else
    MsgBox "varNull变量已经初始化"
End If

 

  上面的代码由一个地方须要注意,就是124行那一句,若是直接用msgbox Null 的话会报错。以下面的图

所示:

 

 

3、Tips

  虽然vbs是一种弱类型的语言,可是这并不妨碍咱们编写出合格的健壮的代码。 这里有几个要点能够

提升代码健壮性。

  一、一个变量只用来作一件事。

  二、利用匈牙利命名法来实现代码的自描述,经过增长前缀来讲明变量的类型。

  三、变量在初始化的时候尽可能进行强制类型转换。

  四、注意vbs的隐式类型转换规则

  五、注意各类类型的区别。

 

--------------------------------------------------------------分割线---------------------------------------------------------------

一、文章均为我的原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/

二、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料

三、若是您以为文章对您有帮助可转至页面上半部分打赏,或移步:打赏 

四、或者在页面右下角点推荐哟!!!

--------------------------------------------------------------分割线------------------------------------------------------------

相关文章
相关标签/搜索