• volcanol的工控博客


      上一个随笔说了一些关于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 = 2 + 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("请输入您的年龄","输入","0")
    '因为输入可能不是数值,所以就需要检测
    If IsNumeric(nInput) Then
        nAge = CInt(nInput)
    Else
        MsgBox "您输入不是数值! 将设置为22岁"
        nAge = 22
    End If
    
    '因为人的年龄不能小于0,且正常情况下不可能超过200岁,所以当出现
    '不在 0 ~ 200 范围的时候,将年龄设置为22
    If nAge < 0 Or nAge > 200 Then
       nAge = 22
    End if 
    MsgBox "您的年龄是: " & nAge
    
    
        

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

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

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

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

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

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

  • 相关阅读:
    2020 7 13 每日随笔
    2020 7 10 每日总结
    2020 7 14 每日总结
    2020 7 16 每日总结
    2020 7 15 每日总结
    2020 7 19 每日总结
    2020 7 18 每日总结
    2020 7 17 每日总结
    2020 7 11
    2020 7 12
  • 原文地址:https://www.cnblogs.com/volcanol/p/10011821.html
Copyright © 2020-2023  润新知