在一组循环中,为什​​么只考虑第一个?

时间:2014-10-04 11:43:31

标签: loops vbscript asp-classic filesystemobject

此代码是多次调用函数的一部分。

for r = 0 to 4
    do until searchname.AtEndOfStream
        lineData = lcase(searchname.ReadLine())
        if instr(lineData,N(r))>0 then
            if (r = 0) then
                v = v + 1
            elseif (r = 1) then
                w = w + 1
            elseif (r = 2) then
                x = x + 1
            elseif (r = 3) then
                y = y + 1
            elseif (r = 4) then
                z = z + 1
            end if
        end if
    loop
next

我的问题是它只考虑r = 0。我试过了ubound(N)。我还尝试用for (r = 0)vwxy五个单独的循环替换z循环。我也尝试了其他几种方法和不同的格式,但它仍然没有用。

1 个答案:

答案 0 :(得分:3)

r = 0案例之后,当内部循环达到searchname.AtEndOfStream并且您增加到下一个值或r时, searchname仍然在最后流。因此,do循环仅针对for循环的第一种情况运行。考虑这个替代方案:

do until searchname.AtEndOfStream
    lineData = lcase(searchname.ReadLine())
    for r = 0 to 4
        if instr(lineData,N(r))>0 then
            if (r = 0) then
                v = v + 1
            elseif (r = 1) then
                w = w + 1
            elseif (r = 2) then
                x = x + 1
            elseif (r = 3) then
                y = y + 1
            elseif (r = 4) then
                z = z + 1
            end if
        end if
    next
loop

通过切换循环,在完成对两者的迭代之前,不会到达流的末尾。