工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二
上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容。
一、NULL补充内容
- '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过
- 'IsNull函数来实现
- '下面用 = 进行比较,不会执行IF子句
- Dim varTest
- varTest = Null
- If varTest = Null Then
- MsgBox "The variable varTest has NULL value."
- End If
- '下面用IsNull检测,会执行语句
- If IsNull(varTest) Then
- MsgBox "利用IsNull检测,执行语句,varTest就是NULL"
- End If
- '*********************************
- '
- 'Null 不能进行强制类型转换
- 'MsgBox CLng(varTest)
- 'MsgBox CStr(varTest)
- 'null的隐式类型转换
- Dim lngTest
- lngTest = + varTest
- '直接输出lngTest产生未知数据错误
- 'MsgBox lngTest
- 'NULL隐式类型转换为控制符串""
- MsgBox "数值与null进行加法运算,生成未知值,但NULL可以和string连接" & lngTest
二、初识OOP
- ' vbs的OOP
- '
- '1、vbs是一种面向对象的脚本编程语言
- '2、oop的一些原理和思想在vbs中是通用的,这里不再多说
- 'set关键字,对对象变量进行赋值必须采用set关键字,否则出错
- 'CreateObject函数,用来创建对象
- 'wsh对象
- Dim objWSH
- Set objWSH = CreateObject("Wscript.Shell")
- MsgBox "当前工作路径是: " & objWSH.CurrentDirectory
- '文件系统
- Dim objFSO
- Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
- objFSO.CreateTextFile("D:\我是vbs生成的文件.txt")
- If objFSO.FileExists("D:\我是vbs生成的文件.txt") Then
- MsgBox "已经通过FSO系统生成文件"
- End If
- '对象类型具有一定的特殊性
- '1、必须用Set关键字来初始化对象变量
- '2、对象的类型必须通过Is函数来检测,和NULL、Empty一样
- '3、有个特殊的对象常量,Nothing,这个表示对象变量不指向任何对象
- '4、通过 set objXxx = Nothing 来取消objXxx与对象引用的关联
- If IsObject(objWSH) Then
- MsgBox "objWSH变量已经初始化,并且已经指向对象"
- End If
- '必须通过set 关键字来重新给对象赋值
- If objWSH Is Nothing Then
- MsgBox "objWSH变量已经初始化,并且已经指向对象,这一句不执行"
- Else
- MsgBox "objWSH变量依然指向对象,不是Nothing,执行这一句"
- End If
- '检测一个变量是否已经不指向任何对象,或者说检测一个变量是否是一个对象
- '的引用,那么必须用 IS 操作符,不能通过简单 = Nothing来检测
- Set objWSH = Nothing
- If objWSH Is Nothing Then
- MsgBox "objWSH变量已经设置为Nothing,执行这一句"
- Else
- MsgBox "objWSH变量被设置成不指向任何对象,这一句不执行"
- End If
三、容错机制
- ' vbs中的容错机制
- '1、在程序的执行过程中不可避免的会出现某些错误,我们有时候不能因为出现
- ' 某些错误就停止程序的执行,这就需要提供一个机制来规避错误出现的风险
- '2、vbs中有一种继续执行机制,就是当错误存在的时候,继续执行
- '3、on error resume next 语句用来告诉脚本引擎,当出现异常的时候,继续往
- ' 下执行
- On Error Resume Next
- '绕过错误继续执行
- Dim varNull
- varNull = Null
- '利用msgbox 显示一个Null值,是一个错误,但是因为有 on error resume next
- '脚本将会继续执行
- MsgBox varNull
- varNull = "我已经赋值,不在是NULL,所以可以正常显示"
- MsgBox varNull
- '********************************************
- ' 利用on error resume next 存在一个风险,就是如果逻辑不正确的话
- ' 将会产生未知的后果,因此在编写代码的时候,最好要用防御式编程
- ' 将产生未知情况的可能性降到最低的可能性
- ' 防御式编程实例
- '假设输入员工的年龄
- Dim nAge
- Dim nInput
- nInput = InputBox("请输入您的年龄","输入","")
- '因为输入可能不是数值,所以就需要检测
- If IsNumeric(nInput) Then
- nAge = CInt(nInput)
- Else
- MsgBox "您输入不是数值! 将设置为22岁"
- nAge =
- End If
- '因为人的年龄不能小于0,且正常情况下不可能超过200岁,所以当出现
- '不在 0 ~ 200 范围的时候,将年龄设置为22
- If nAge < Or nAge > Then
- nAge =
- End if
- MsgBox "您的年龄是: " & nAge
--------------------------------------------------------------分割线---------------------------------------------------------------
1、文章均为个人原创,欢迎转载,转载请保留出处:https://www.cnblogs.com/volcanol/
2、获取工控PLC、变频器、HMI、计算机、Windows、Linux、嵌入式资料点击:获取资料
3、如果您觉得文章对您有帮助可转至页面上半部分打赏,或移步:打赏
4、或者在页面右下角点推荐哟!!!
--------------------------------------------------------------分割线------------------------------------------------------------
工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二的更多相关文章
- 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组
数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...
- 工控随笔_12_西门子_WinCC的VBS脚本_03_变量类型
说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...
- 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址
在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...
- 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门
很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...
- 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01
最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...
- 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02
vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...
- 工控随笔_19_西门子_WinCC的VBS脚本_08_常量和流程控制_01
在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等, 这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面 也 ...
- 工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数
和其他语言一样,vbs提供了过程和函数机制,通过函数和过程可以优化代码结构和实现代码复用, 减少代码的编写量. 一.代码 具体不再多说,看实例代码. ' vbs的函数和过程 '1.过程式编程是一大编程 ...
- 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符
VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...
随机推荐
- 【转】反编译D-Link路由器固件程序并发现后门
固件是D-link无线路由器(型号:DIR-100 revA)的固件程序 v1.13.使用工具Binwalk,很快的就从中发现并提取出一个只读SquashFS文件系统,没用多大功夫我就将这个固件程序的 ...
- Sharepoint 2016 配置FBA(二) 编辑Web,config文件
使FBA生效,下一步在Sharepoint中设置Membership Provider,一个Membership Provider是一个从程序到任证库(credential store)的接口.这样允 ...
- ArrayList、LinkedList和vector的区别
1.ArrayList和Vector都是数组存储,插入数据涉及到数组元素移动等操作,所以比较慢,因为有下标,所以查找起来非常的快. LinkedList是双向链表存储,插入时只需要记录本项的前后项,查 ...
- [转]How to Send Ethereum with Web3.js and Node
原文:https://davekiss.com/ethereum-web3-node-tutorial/ Ethereum took the web and cryptocurrency worl ...
- linux 中 nginx配置
1.nginx中include的使用 在/usr/local/nginx/conf/nginx.conf中可以使用include去加载其他配置文件: 例如:include vhost/*.conf; ...
- js bind0
$(function(){ $("#ul").on('click','li',function(){ if(!$(this).a $(function(){ $("#ul ...
- jQuery-3.事件篇---自定义事件
jQuery自定义事件之trigger事件 众所周知类似于mousedown.click.keydown等等这类型的事件都是浏览器提供的,通俗叫原生事件,这类型的事件是需要有交互行为才能被触发. 在j ...
- SpringBoot实现跨域
一.什么是跨域请求? 跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样.说白了就是ip.网络协议.端口都一样的时候,就是同一个域,否则就是跨域.这是由 ...
- 番外篇1:在Windows环境中安装JDK
他山之石,可以攻玉!欢迎关注我的微信公众号 本文作为构建第一个Java程序的番外篇一,跟大家探讨下在Windows下怎么安装JDK.由于本人没有Mac,因此如果是Mac的同学,请自行百度哦! 读前预览 ...
- CCF 消息传递接口 (队列) 201903-4 (100分)
[题目描述] 老师给了 T 份 MPI 的样例代码,每份代码都实现了 n 个进程通信.这些进程标号 从 0 到 n − 1,每个进程会顺序执行自己的收发指令,如:“S x”,“R x”.“S x”表示 ...