回 帖 发 新 帖 刷新版面

主题:[原创]发现 vb 脚本bug

今天写一个脚本,发现个bug,如下:

sub ClickBtn(key)
    dim bef,rch
    
    bef=shForm.showIn.value
    rch=right(bef,1)
    if(InStr("/*-+",rch) and InStr("/*-+",key)) then
        msgbox "输入错误 !",vbOkOnly+vbInformation,"错误"
        call BtnClear()
        exit sub
    end if
    shForm.showIn.value=bef&key
end    sub

上面是出现bug的地方,当 rch='-' key='+' 或者 rch='/' key='*' 时本来应该
进入if 语句执行,但是却怎么也进不去,我找了很久,发现了两个很奇怪的数对
1&2 3&4 当执行 msgbox(cBool(1 and 2)) msgbox(cBool(2 and 1))
msgbox(cBool(3 and 4)) msgbox(cBool(4 and 3))时这几个结果都是 false
试了其它的数却是正常,不知道这是不是 bug  ,也不知道还有没有这样的数对
浏览器 IE6.0

回复列表 (共5个回复)

沙发

我只学了个大概  里面的函数都有很多不熟悉,根本看不懂  汗汗汗。。。。

板凳

希望能和你成为朋友  QQ:178424225  电话13017553291  本人大二学生   多指教

3 楼

注意 4 and 3 = 0 !!
 因为 4 的二进制是100,而3的二进制是11,作AND运算
   
        100
 and)   011
 -----------
        000
  即结果等于零,也就是False
 因为Instr返回一个数,最好是写成
 if(InStr("/*-+",rch)>0 and InStr("/*-+",key)>0) then

4 楼


VBS脚本中不要在IF中加(),即改为:
if InStr("/*-+",rch) and InStr("/*-+",key) then

5 楼

受 C 语言的影响以为 3 = TRUE ,4 = TRUE  
3 AND 4 = TRUE AND TRUE = TRUE

我来回复

您尚未登录,请登录后再回复。点此登录或注册