【发布时间】:2017-02-23 14:48:14
【问题描述】:
在具有多个条件的 IF 语句中遇到了一个奇怪的问题。
最后一个工作版本如下所示:
If VAR1 = "SCRT" And InStr("|TEC|FIN|", "|" & VAR2 & "|")) And VAR3 = 1 Then
现在,我实现另一个条件来声明:
If VAR1 = "SCRT" And InStr("|TEC|FIN|", "|" & VAR2 & "|")) And (VAR3 = 1 or VAR3 = 15) Then
使用此值: VAR1:“”(空) VAR2:“鳍” VAR3:1
它将在调试中正常工作的代码。奇怪的是在生产环境编译运行,条件通过了,第一个条件不ok。
已经记录了要检查的值。 生产环境具有相同的文件(库)。
除了条件之外唯一改变的是这个模块开头的 Option Explicit。
谢谢!!
【问题讨论】:
-
On Error Resume Next和VAR1为空? -
Instr 返回匹配的位置(1 或 5 或 0)。 And 运算符在 VB6 中是按位的。 TRUE 值为 -1,因此所有位都已设置。您应该检查 Instr 的结果是否 > 0。这将返回 0 或 -1,并且您的表达式会更正确。
-
我看到了这个,但在这种情况下 vb6 隐式地将任何值 >0 转换为 True。
-
只能靠运气。例如,如果您有两个 Instr 条件,它可能会失败。这将失败: If InStr("abc", "a") And InStr("abc", "b") Then
-
好的....这是一个改变,它将被改变! =) 但这不是分辨率。
标签: debugging if-statement vb6 multiple-conditions