工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01
在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等,
这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面
也提供了和其他一些语言中一样的机制: 常量。
常量大体有两种类型: 字面值常量 和 具名常量。
一、常量
Option Explicit ' vbs 常量
'vbs有两种类型的常量: 字面值常量 和 具名常量 '字面值常量
'字面值常量, 就如字面意思一样,其值就和字面意思表达的一样
Dim strAddress
'下面语句的 中华人民共和国上海市 就是字面值常量
strAddress = "中华人民共和国上海市" Dim nYear
'下面语句的 2000 就是字面值常量
nYear = '具名常量
'1、具名常量,其实质就是其值不能修改的变量, 这个变量一旦初始化后
' 其存储的内容不能被改变,
'2、具名常量通过关键字 const 指定
Const Pi = 3.1415926 '具名常量初始化后不能在赋值
Pi= MsgBox Pi
如上代码,具名常量初始化后不能再进行赋值,如果赋值的话就会报错。如下图所示:
这个地方需要注意。
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,如果这个时候访问的话必须再次赋值,否则就会出错,如下图所示:
循环变量在循环结束后被设置为 Empty。
三、Tips
1、分支结构不要嵌套太深
2、循环结构知道次数的一半用For语句
3、数组、集合遍历可以使用For each...next语句。
--------------------------------------------------------------分割线---------------------------------------------------------------
1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/
2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料
3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏
4、或者在页面右下角点推荐哟!!!
--------------------------------------------------------------分割线---------------------------------------------------------------
工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01的更多相关文章
- 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02
vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...
- 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门
很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...
- 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01
最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...
- 工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二
上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容. 一.NULL补充内容 '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过 'IsNull函数来实现 ' ...
- 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...
- 工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数
和其他语言一样,vbs提供了过程和函数机制,通过函数和过程可以优化代码结构和实现代码复用, 减少代码的编写量. 一.代码 具体不再多说,看实例代码. ' vbs的函数和过程 '1.过程式编程是一大编程 ...
- 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组
数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...
- 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...
- 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符
VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...
随机推荐
- java 反射简说
1 Class类 就是类的类型.研究反射先了解下Class类. 获取类的类型的三种方法: Class c1 = 对象.getClass(); Class c2 = Class.forName(&quo ...
- SpringBoot中的ajax跨域问题
在控制类加入注释@CrossOrigin(allowCredentials = "true",allowedHeaders = "*",origins = {& ...
- 您只能在 HTML 输出中使用 document.write。如果您在文档加载后使用该方法,会覆盖整个文档
https://blog.csdn.net/qq_37425546/article/details/54868908
- sort()的用法,参数以及排序原理(转载)
sort() 方法用于对数组的元素进行排序,并返回数组.默认排序顺序是根据字符串Unicode码点.语法:arrayObject.sort(sortby):参数sortby可选.规定排序顺序.必须是函 ...
- 记一次idea启动tomcat后控制台乱码的坑
IDEA的编码配置大致跟<IntelliJ IDEA 控制台中文乱码解决方案>一样 但是启动后依旧乱码!why? 后来想起来,之前因为在win10控制台下跑tomcat乱码,所以,改过一个 ...
- java中,字符串类型的时间数据怎样转换成date类型。
将字符串类型的时间转换成date类型可以使用SimpleDateFormat来转换,具体方法如下:1.定义一个字符串类型的时间:2.创建一个SimpleDateFormat对象并设置格式:3.最后使用 ...
- python logging 日志轮转文件不删除问题的解决方法
项目使用了 logging 的 TimedRotatingFileHandler : #!/user/bin/env python # -*- coding: utf-8 -*- import log ...
- php中include和require的区别(整理)
require 的使用方法如 require("MyRequireFile.php"); .这个函数通常放在 PHP 程序的最前面,PHP 程序在执行前,就会先读入 requi ...
- AX3298添加新sensor
这是编译的工程目录. 1,先把sensor对应的驱动比如GC1034.c添加到工程.然后编译成库.会在res目录下生产sensor.bin文件 流程:编译后在debug目录生成 elf 文件AX329 ...
- 软件可维护性的影响因素&如何提升
影响因素: 1.可理解性 2.可测试性 3.可修改性 4.可移植性 5.可重用性 如何提升: 1.建立明确的软件质量目标2.使用先进的软件开发技术和工具3.建立明确的质量保证4.选择可维护的语言5.改 ...