工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01

时间:2022-03-03 15:08:16

  在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等,

这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面

也提供了和其他一些语言中一样的机制: 常量。

  常量大体有两种类型: 字面值常量 和 具名常量。

一、常量

Option Explicit

'   vbs 常量
'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量
'字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
Dim strAddress
'下面语句的 *上海市 就是字面值常量
strAddress = "*上海市" Dim nYear
'下面语句的 2000 就是字面值常量
nYear = '具名常量
'1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后
' 其存储的内容不能被改变,
'2、具名常量通过关键字 const 指定
Const Pi = 3.1415926 '具名常量初始化后不能在赋值
Pi= MsgBox Pi

  如上代码,具名常量初始化后不能再进行赋值,如果赋值的话就会报错。如下图所示:

工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01

  这个地方需要注意。

Option Explicit

'   vbs 常量
'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量
'字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
Dim strAddress
'下面语句的 *上海市 就是字面值常量
strAddress = "*上海市" Dim nYear
'下面语句的 2000 就是字面值常量
nYear = '具名常量
'1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后
' 其存储的内容不能被改变,
'2、具名常量通过关键字 const 指定
Const Pi = 3.1415926 '具名常量初始化后不能在赋值
'Pi= 10 MsgBox Pi 'vbs的内置具名常量
'在vbs中内置了部分具名常量,这些常量方便使用vbs
'典型的具名常量就是 msgbox的具名常量,通过不同的具名常量显示不同的按钮形式
'1、仅显示OK、确定按钮
MsgBox Pi,vbOKOnly '2、显示yes、no按钮
MsgBox Pi,vbYesNo '3、显示 i 图标
MsgBox Pi,vbYesNo + vbInformation '对于vbs内置的具名常量,建议可以查手册,这里再说几个常用的,其他不多说
' vbNewLine 这个是表示再起一行的意思
' vbcrlf 这个与上面的vbnewline是一个意思
MsgBox Pi & vbNewLine & "新行" & vbCrLf & "新的第二行"

二、流程控制

  流程控制是编程语言最终要的概念之一,需要注意。 

Option Explicit

Rem 流程控制

'流程控制是编程语言中重要的概念,通过流程控制可以实现复杂的功能控制
'流程控制主要有: 分支、循环两种 ' 分支
'1、分支主要有IF语句
'2、select case 语句 'if语句
Dim strPrompt
Dim nSelect strPrompt = vbCrLf & "1: 选择Yes说哈哈" & vbCrLf & _
"2: 选择No说嘻嘻" & vbCrLf & "3: 选择取消,不说话"
nSelect = MsgBox("请选择不同的按钮,然后实现不同的功能" & strPrompt, vbYesNoCancel) If nSelect = vbyes Then
MsgBox "选择Yes说哈哈"
ElseIf nSelect = vbno Then
MsgBox "选择No说嘻嘻"
Else
MsgBox "选择取消,不说话"
End If '这个地方需要注意select case语句的执行与其他语言的不一致的地方
Select Case nSelect
Case vbyes
MsgBox "选择Yes哈哈"
Case vbno
MsgBox "选择No说嘻嘻"
Case vbcancel
MsgBox "选择取消,不说话"
Case Else
MsgBox "不正确的选择"
End Select '循环
'循环共有四种形式
'1、 for..... next
'2、 do....loop、
'3、 while....wend 'for 循环
'for 循环有两种形式
'1、for...next
'2、for each .....next 'for...next
'for....next循环主要用于循环次数明确的循环应用,例如打印斐波那契数列
'的前多少项
Dim nStart
Dim nSecond
Dim nLoop
Dim strMsg
Dim nTemp '斐波那契数列的开始两项
nStart =
nSecond =
strMsg = nStart & vbNewLine & nSecond '计算斐波那契数列的第3-30项
For nLoop = To
nTemp = nSecond
nSecond = nSecond + nStart
nStart = nTemp
strMsg = strMsg & vbNewLine & nSecond
Next
MsgBox strMsg 'for each.....next循环
'for each....next循环是用来遍历集合中所有元素的一种特定的循环结构
'通过这个循环来实现对循环次数不确定的情况进行遍历
'使用for each....next循环需要使用关键字in, in表示在集合中访问元素
'同样需要使用一个循环控制变量,在循环中这个循环变量代表的就是集合中的元素
'但是这个变量在使用完毕之后,循环变量就 objLoop = empty
'如果要再使用必须重新赋值
Dim objFSO
Dim objFolder
Dim objLoop
Dim strFileName Set objFso=CreateObject("Scripting.FileSystemObject")
Set objFolder= objFSO.GetFolder("D:\01_vbs")
For Each objLoop In objFolder.Files
strFileName =strFileName & objLoop.Name & vbCrLf
'MsgBox "我是循环变量,我的值为:" & objLoop
Next
MsgBox strFileName '下面的语句检测objLoop变量在循环结束后的值
If IsEmpty(objLoop) Then
MsgBox "已经设置为empty"
ElseIf IsNull(objLoop) then
MsgBox "已经设置为空"
Else
MsgBox "未知结果"
End If 'for each....next 循环还可以用来遍历数组
'注意新的脚本解释器对于数组维数的定义,这里5表示下标最大为5,但是开始
'是从0,所以有6个元素
Dim nArrayName() nArrayName() =
nArrayName() =
nArrayName() =
nArrayName() =
nArrayName() =
nArrayName() = For Each nLoop In nArrayName
MsgBox nLoop
Next MsgBox "遍历后,nLoop的值为:" & nLoop

  在使用For Each...next 语句的时候,要注意循环变量的值,在循环结束后已经自动的被设置

为Empty,如果这个时候访问的话必须再次赋值,否则就会出错,如下图所示:

工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01

  循环变量在循环结束后被设置为 Empty。

三、Tips

1、分支结构不要嵌套太深

2、循环结构知道次数的一半用For语句

3、数组、集合遍历可以使用For each...next语句。

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

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

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

3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏 

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

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