菜鸟中的菜鸟一枚,我想在一个组态软件中建立一个VBS全局脚本,功能跟InvertBit的功能大致差不多。If "tag1"=="tag2"  Then
   "tag1"=0
Else 
   "tag1"="tag2"
End If其中"tag1"是在组态按钮的事件时填入的外部变量(InOut),"tag2"是在组态按钮的事件时填入的定值(可能是1,2,4,8,16等)。  我想请教在这段代码中,该如何声明"tag21"和"tag2"。谢谢!

解决方案 »

  1.   

    没看明白意思,你说的组态按钮是指单选框吗。basic中相等判断应该也是用等号的啊
      

  2.   

    没看明白意思,你说的组态按钮是指单选框吗。basic中相等判断应该也是用等号的啊 
      

  3.   

    我不是专业写代码的,只是工作中会用到,所以用到的词语跟你们的专业术语可能不相同,我尽量表达清楚我的意思吧。
    上面这段代码相当于一个封装的函数,"tag1"和"tag2"是这个函数的数据接口。我会重复调用这个函数,其中"tag2"是这个函数的输入值,不同情况下的调用可能会是不同的值,我在调用的时候会输入一个定值。而"tag1"是函数的输入输出变量,我会在调用的时候给"tag1"赋不同的变量,假设赋一个"tag3",根据这个函数的运算,"tag3"会变成另外的值。
    在这段代码中,"tag21"和"tag2",我是直接使用的,但是我没有声明,因为我不知道怎样来声明这两个变量。请教该如何声明?谢谢!
    上面两位朋友所说的意思是在VB中 判断两个值相等是直接用"=",而不是C中的需要用"=="吗?
    谢谢!
      

  4.   

    使用一个字典集合就可以了。字典的key相当于你的变量名,字典的value相当于你的变量值。在此基础上,你可以考虑实现一个脚本解析器去运算求值表达式。
      

  5.   

    Re:上面两位朋友所说的意思是在VB中 判断两个值相等是直接用"=",而不是C中的需要用"=="吗?对,BASIC中赋值和相等条件共用一个符号。看来还是没几个人看懂你的意思。你说4楼说的专业,其实在我们看来,你在3楼说的何尝不像专业术语一样看不懂。
    建议:多发上点代码或图片说明你的意思。
      

  6.   

     我现在截个图来表达我的想法,如图所示。
    首先,我所建立的脚本函数在组态时,需要重复调用的,如图中的InvertBit的意义是在某个按钮按下时对某变量的BOOL值取反,这个变量是不固定的,只要是位变量可读可写,都可以填在这里,任何一个按钮都可以同时使用这个函数。
    图中1表示我需要在脚本中建立的1个变量(如”tag1“)是输入输出类型的。
    图中2表示我在脚本中建立的这个变量(如”tag1“)在组态时需要填入的是变量(整数类型),而不是一个常量。
    图中3表示我需要在VBS脚本中建立的另1个变量(如”tag2“)是用来一个常量(整数类型)的。我这里与SetValue不同的是,”tag2“是用来做输入的,不是输出的。
    我的这个函数的目的是判断某个整数的值是否等于一个值,如果是就让这个整数等于0,否则让这个整数等于这个值,代码如一楼所示,但我不知道在VBS脚本中该如何声明 ”tag1“和”tag2“
     谢谢大家的关注!
      

  7.   

    dim tag1
    dim tag2If tag1=tag2  Then
       tag1=0
    Else 
       tag1=tag2
    End If