上一个随笔说了一些关于vbs变量类型的内容,这一篇我们继续说说变量类型相关的内容。

一、NULL补充内容

  1. '需要注意的是,NULL不能简单通过 = 来进行比较,而必须通过
  2. 'IsNull函数来实现
  3.  
  4. '下面用 = 进行比较,不会执行IF子句
  5. Dim varTest
  6. varTest = Null
  7. If varTest = Null Then
  8. MsgBox "The variable varTest has NULL value."
  9. End If
  10.  
  11. '下面用IsNull检测,会执行语句
  12. If IsNull(varTest) Then
  13. MsgBox "利用IsNull检测,执行语句,varTest就是NULL"
  14. End If
  15.  
  16. '*********************************
  17. '
  18. 'Null 不能进行强制类型转换
  19. 'MsgBox CLng(varTest)
  20. 'MsgBox CStr(varTest)
  21.  
  22. 'null的隐式类型转换
  23. Dim lngTest
  24. lngTest = + varTest
  25. '直接输出lngTest产生未知数据错误
  26. 'MsgBox lngTest
  27.  
  28. 'NULL隐式类型转换为控制符串""
  29. MsgBox "数值与null进行加法运算,生成未知值,但NULL可以和string连接" & lngTest

二、初识OOP

  1. ' vbs的OOP
  2. '
  3. '1、vbs是一种面向对象的脚本编程语言
  4. '2oop的一些原理和思想在vbs中是通用的,这里不再多说
  5.  
  6. 'set关键字,对对象变量进行赋值必须采用set关键字,否则出错
  7. 'CreateObject函数,用来创建对象
  8.  
  9. 'wsh对象
  10. Dim objWSH
  11. Set objWSH = CreateObject("Wscript.Shell")
  12. MsgBox "当前工作路径是: " & objWSH.CurrentDirectory
  13.  
  14. '文件系统
  15. Dim objFSO
  16. Set objFSO = WScript.CreateObject("Scripting.FileSystemObject")
  17. objFSO.CreateTextFile("D:\我是vbs生成的文件.txt")
  18. If objFSO.FileExists("D:\我是vbs生成的文件.txt") Then
  19. MsgBox "已经通过FSO系统生成文件"
  20. End If
  21.  
  22. '对象类型具有一定的特殊性
  23. '1、必须用Set关键字来初始化对象变量
  24. '2、对象的类型必须通过Is函数来检测,和NULL、Empty一样
  25. '3、有个特殊的对象常量,Nothing,这个表示对象变量不指向任何对象
  26. '4、通过 set objXxx = Nothing 来取消objXxx与对象引用的关联
  27.  
  28. If IsObject(objWSH) Then
  29. MsgBox "objWSH变量已经初始化,并且已经指向对象"
  30. End If
  31.  
  32. '必须通过set 关键字来重新给对象赋值
  33. If objWSH Is Nothing Then
  34. MsgBox "objWSH变量已经初始化,并且已经指向对象,这一句不执行"
  35. Else
  36. MsgBox "objWSH变量依然指向对象,不是Nothing,执行这一句"
  37. End If
  38.  
  39. '检测一个变量是否已经不指向任何对象,或者说检测一个变量是否是一个对象
  40. '的引用,那么必须用 IS 操作符,不能通过简单 = Nothing来检测
  41. Set objWSH = Nothing
  42. If objWSH Is Nothing Then
  43. MsgBox "objWSH变量已经设置为Nothing,执行这一句"
  44. Else
  45. MsgBox "objWSH变量被设置成不指向任何对象,这一句不执行"
  46. End If

三、容错机制

  1. ' vbs中的容错机制
  2.  
  3. '1、在程序的执行过程中不可避免的会出现某些错误,我们有时候不能因为出现
  4. ' 某些错误就停止程序的执行,这就需要提供一个机制来规避错误出现的风险
  5. '2vbs中有一种继续执行机制,就是当错误存在的时候,继续执行
  6. '3、on error resume next 语句用来告诉脚本引擎,当出现异常的时候,继续往
  7. ' 下执行
  8. On Error Resume Next
  9.  
  10. '绕过错误继续执行
  11. Dim varNull
  12. varNull = Null
  13. '利用msgbox 显示一个Null值,是一个错误,但是因为有 on error resume next
  14. '脚本将会继续执行
  15. MsgBox varNull
  16.  
  17. varNull = "我已经赋值,不在是NULL,所以可以正常显示"
  18. MsgBox varNull
  19.  
  20. '********************************************
  21. ' 利用on error resume next 存在一个风险,就是如果逻辑不正确的话
  22. ' 将会产生未知的后果,因此在编写代码的时候,最好要用防御式编程
  23. ' 将产生未知情况的可能性降到最低的可能性
  24. ' 防御式编程实例
  25. '假设输入员工的年龄
  26. Dim nAge
  27. Dim nInput
  28. nInput = InputBox("请输入您的年龄","输入","")
  29. '因为输入可能不是数值,所以就需要检测
  30. If IsNumeric(nInput) Then
  31. nAge = CInt(nInput)
  32. Else
  33. MsgBox "您输入不是数值! 将设置为22岁"
  34. nAge =
  35. End If
  36.  
  37. '因为人的年龄不能小于0,且正常情况下不可能超过200岁,所以当出现
  38. '不在 0 ~ 200 范围的时候,将年龄设置为22
  39. If nAge < Or nAge > Then
  40. nAge =
  41. End if
  42. MsgBox "您的年龄是: " & nAge

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

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

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

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

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

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

工控随笔_13_西门子_WinCC的VBS脚本_04_变量类型之二的更多相关文章

  1. 工控随笔_15_西门子_WinCC的VBS脚本_05_变量类型之三_VBS数组

    数组是一种复杂数据类型,不但有数组本身的数据类型: 数组,还有数组元素中存储的数据的类型. 一.vbs中的数组类型 在VBS中提供了两种数组类型,一种是固定数组,一种是动态数组. 1.固定数组 就是在 ...

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

    说到编程语言,总是绕不开数据类型,因为数据类型决定了数据可以进行什么样的操作.同时数据类型 从广义上来说是一种数据结构,在过程式编程的过程中,曾经有过这样一种说法: 程序 = 数据结构 + 算法 可见 ...

  3. 工控随笔_18_西门子_WinCC的VBS脚本_07_变量作用域和传值、传址

    在vbs脚本中也存在和其他编程语言一样的概念,那就是变量的作用域,变量的作用域决 定在什么范围内可以访问. 同样的在vbs脚本中对于变量也有一个生命周期, 变量的生命周期决定了变量的存续时间 这个主要 ...

  4. 工控随笔_10_西门子_WinCC的VBS脚本_01_基础入门

    很多人都认为VB语言或者VBS脚本语言是一种很low的语言,从心里看不起VB或者VBS, 但是其实VBS不仅可以做为系统管理员的利器,同样在工控领域VBS语言大有用武之地. 西门子的WinCC提供了两 ...

  5. 工控随笔_21_西门子_WinCC的VBS脚本_10_对象_01

    最近有点小忙,各种事情,心情也不是很好,烦心事特别多,因此最近更新的比较慢. 不敢再松懈了,今天正好有点时间,就继续看了一下VBScript中关于对象的一些内容. 一.对象 OOP是编程规模发展到一定 ...

  6. 工控随笔_20_西门子_WinCC的VBS脚本_09_常量和流程控制_02

    vbs不但提供了分支结构,还提供了丰富的循环形式.一共有3种循环: 1.for循环 2.do...loop循环 3.while循环 各种循环有各自的特点,在使用的时候可以进行转换. 前面已经描述过Fo ...

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

    在编程的过程中,有时候我们会使用一些固定的值,例如圆周率,或者某个人的生日,或者家庭住址等等, 这些信息对于一个对象来说一旦确定就不会改变,因此我们在编程的时候也不希望这些信息会改变,在VBS里面 也 ...

  8. 工控随笔_17_西门子_WinCC的VBS脚本_06_过程和函数

    和其他语言一样,vbs提供了过程和函数机制,通过函数和过程可以优化代码结构和实现代码复用, 减少代码的编写量. 一.代码 具体不再多说,看实例代码. ' vbs的函数和过程 '1.过程式编程是一大编程 ...

  9. 工控随笔_11_西门子_WinCC的VBS脚本_02_运算符

    VBS脚本做为编程语言,提供了很多的运算符,通过这些运算符,可以实现不同的操作.运算符具有不同的类型 不同的运算符之间具有运算优先级. 一.运算符的分类 大体分为以下几类: 1.赋值运算符 2.算术运 ...

随机推荐

  1. 【转】反编译D-Link路由器固件程序并发现后门

    固件是D-link无线路由器(型号:DIR-100 revA)的固件程序 v1.13.使用工具Binwalk,很快的就从中发现并提取出一个只读SquashFS文件系统,没用多大功夫我就将这个固件程序的 ...

  2. Sharepoint 2016 配置FBA(二) 编辑Web,config文件

    使FBA生效,下一步在Sharepoint中设置Membership Provider,一个Membership Provider是一个从程序到任证库(credential store)的接口.这样允 ...

  3. ArrayList、LinkedList和vector的区别

    1.ArrayList和Vector都是数组存储,插入数据涉及到数组元素移动等操作,所以比较慢,因为有下标,所以查找起来非常的快. LinkedList是双向链表存储,插入时只需要记录本项的前后项,查 ...

  4. [转]How to Send Ethereum with Web3.js and Node

    原文:https://davekiss.com/ethereum-web3-node-tutorial/   Ethereum took the web and cryptocurrency worl ...

  5. linux 中 nginx配置

    1.nginx中include的使用 在/usr/local/nginx/conf/nginx.conf中可以使用include去加载其他配置文件: 例如:include vhost/*.conf; ...

  6. js bind0

    $(function(){ $("#ul").on('click','li',function(){ if(!$(this).a $(function(){ $("#ul ...

  7. jQuery-3.事件篇---自定义事件

    jQuery自定义事件之trigger事件 众所周知类似于mousedown.click.keydown等等这类型的事件都是浏览器提供的,通俗叫原生事件,这类型的事件是需要有交互行为才能被触发. 在j ...

  8. SpringBoot实现跨域

    一.什么是跨域请求? 跨域请求,就是说浏览器在执行脚本文件的ajax请求时,脚本文件所在的服务地址和请求的服务地址不一样.说白了就是ip.网络协议.端口都一样的时候,就是同一个域,否则就是跨域.这是由 ...

  9. 番外篇1:在Windows环境中安装JDK

    他山之石,可以攻玉!欢迎关注我的微信公众号 本文作为构建第一个Java程序的番外篇一,跟大家探讨下在Windows下怎么安装JDK.由于本人没有Mac,因此如果是Mac的同学,请自行百度哦! 读前预览 ...

  10. CCF 消息传递接口 (队列) 201903-4 (100分)

    [题目描述] 老师给了 T 份 MPI 的样例代码,每份代码都实现了 n 个进程通信.这些进程标号 从 0 到 n − 1,每个进程会顺序执行自己的收发指令,如:“S x”,“R x”.“S x”表示 ...