回 帖 发 新 帖 刷新版面

主题:请教源码简化问题(求教于moz兄及愿意帮助的朋友)

IF a <> "" AND a < k% AND b <> "" THEN
   IF a = 1 THEN
    IF b < os$ THEN
    goto zy
    ELSE
    goto err
    END IF
   END IF
   IF a = 2 THEN
    IF b < ts$ THEN
    goto zy
    ELSE
   goto err
    END IF
   END IF
   IF a = 3 THEN
    IF b < fs$ THEN
    goto zy
    ELSE
   goto err
    END IF
   END IF
zy:
...
...
...
ELSE
err:
MsgBox "O", "", "错误!"
END IF

敬请moz兄或其他朋友帮忙简化(尽量不用GOTO语句)上面的源码。源码中的zy:后面跟着大量语句;IF a = 1与IF a = 2、IF a = 3是并列的,即如果a = 1的情况下就不会等于2或3的了。

回复列表 (共1个回复)

沙发

问题一,你这些东西是什么年代的?
问题二,这些东西是谁写的?
问题三,你自己不能把它们的关系分析好吗?

1. 首先看最外面的一个IF
   IF a <> "" AND a < k% AND b <> "" THEN
    ...
   else
     err
   end if
   我先不管你那IF的条件存在什么问题,
   (在QB中一个变量应该不可以既和字符比较又和数值比较的)
   你首先就要明白这个条件需要执行什么
   在你的整个篇幅里面,实际作用的只有 ZY: 和 ERR:
   其他的都只是判断语句
   所以在这一个 IF 可以确定的是
   要执行 ERR:
   需要条件: a="" or a>=k% or b=""

2. 把第二层的条件和结果分离出来:
        条件 IF         结果 then               
    a=1 and b< os$       goto ZY:
    a=1 and b>=os$      goto ERR:
    a=2 and b< ts$       goto ZY:
    a=2 and b>=ts$      goto ERR:
    a=3 and b< fs$       goto ZY:
    a=3 and b>=fs$      goto ERR:

3. 事实上目标只有两个: ZY: ERR:
   把众多条件简化合并起来做成一个IF就完成了.

4. 这些事情我不要想得太多了,
   对于我来说是很简单,
   但希望能把机会留给你自己去做,
   总比宁波人把同一个问题反复来反复去的问我要好.
   你自己去研究总比我做现成的给你饭来张口的好.

我来回复

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