2014-10-04 74 views
1

这段代码是被多次调用的函数的一部分。在一组循环中,为什​​么只考虑第一个循环?

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)。我也尝试用v,w,x,yz的五个单独的循环代替for (r = 0)循环。我已经尝试了其他几种方法和格式,但它仍然无法正常工作。

回答

3

r = 0情况后,当内环已经达到searchname.AtEndOfStream,你递增到下一个值或rsearchname尚处于流结束。因此,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 

通过切换循环,直到迭代完成后才能到达流的末尾。

+0

谢谢你很快回到我身边。 完美地工作。其他方面我不会接受它。 只是想知道,如果我曾经想要通过其他结构去,我怎么能将指针移回第一个循环之后的开始? – user3782707 2014-10-04 13:59:23

+0

那么'searchname'是什么?什么样的结构,以及它是如何创建的?你看过它的文档吗? – jonrsharpe 2014-10-04 14:26:53

+0

'searchname'只是一个已打开的文本文件。 ('set searchname = objFSO.OpenTextFile((“C:\ Inetpub \ wwwroot \ Files \”&idname),1,true)') – user3782707 2014-10-04 14:30:11

相关问题