此代码是多次调用函数的一部分。
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)
,v
,w
,x
和y
五个单独的循环替换z
循环。我也尝试了其他几种方法和不同的格式,但它仍然没有用。
答案 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
通过切换循环,在完成对两者的迭代之前,不会到达流的末尾。