注册 登录
编程论坛 VB6论坛

关于for next 多重循环的问题

ictest 发布于 2016-09-20 17:12, 2568 次点击
我写的一段语句是用来读一个TXT文件,文件里从第一行(包括第一行)每隔14行出现一个需要抓取的行,里面共有4行需要抓取;现在需要每抓取一行就写入一个文本框数组(共5个文本框数组,抓取的第一个数据写入text(0),抓取的第二个数据写入text(1)......如果只抓取到4个的话,则第5个文本框为空),现在问题是,我写的语句运行结果是:抓取的第一个数据把5个文本框数组都填满后,再抓取第二个数据,再把5个文本框数组都填满,然后再抓取第三个数据......,请问如何能达到我预想的效果呢?

  Dim xRow, yLine, i, j, z, b As Long, Temp As String, Arr
    For z = 0 To 3
    For b = 0 To 4
  xRow = z * 14 + 1
  yLine = 1
  Me.AutoRedraw = True: j = 1
  Open "c:\1.dat" For Input As #1 '文件路径
  For i = 1 To xRow
  Input #1, Temp
  Next i
  Close #1
  Arr = Split(Temp, Chr(9))
        Text1(b).Text = Arr(yLine - 1)
    Next b
   Next z
4 回复
#2
风吹过b2016-09-20 17:57
  Dim xRow, yLine, i, j, z, b As Long, Temp As String, Arr
  Me.AutoRedraw = True
  Open "c:\1.dat" For Input As #1 '文件路径
    For b = 0 To 4                        '5个文本框
     Input #1, Temp                        '读一行
     yLine = 1   
     Arr = Split(Temp, Chr(9))
     Text1(b).Text = Arr(yLine - 1)        '显示
     For i = 1 To 14                        '跳过14行
       Input #1, Temp
       if eof(1) then exit for            '跳的过程中,如果到文件尾,退出跳来
     Next i
     if eof(1) then exit for            '如果到文件尾,退出循环
   Next b
  Close #1

浏览器写的代码,未测试。
#3
ictest2016-09-21 00:42
回复 2楼 风吹过b
版主大人:
    经测试,未能达到预期效果,未跳至14行,只跳了4行。现奉上文本文件供测试。需要截取到“6827186-11-2”“6827186-11-3”“6827186-11-4”“6827186-11-5”四个字符串分别按顺序填入text1(0).text、text1(1).text、text1(2).text、text1(3).text中。

我想,我写语句的时候思路也算清晰,因为已知所需字符串的个数,然后通过公式计算出所需读取的行数,然后读文件中的指定行,写入对应的文本框,但就是所需字符串的个数的循环(for 0 TO 3)和 文本框数组循环(for 0 TO 4)搞晕了。

麻烦版主了!


只有本站会员才能查看附件,请 登录


[此贴子已经被作者于2016-9-21 00:43编辑过]

#4
xzlxzlxzl2016-09-21 01:02
Private Sub Form_Click() '请点击窗体
  Dim r As Integer, s As Integer, a As String
  Open "c:\1.dat" For Input As #1
  While Not EOF(1)
    Line Input #1, a
    If (s Mod 14) = 0 Then
      Text1(r) = a
      r = r + 1
    End If
    s = s + 1
  Wend
  Close #1
End Sub
#5
ictest2016-09-21 05:40
回复 4楼 xzlxzlxzl
非常感谢xzlxzlxzl,您的回复我已经试验过,所得结果是我所需的,谢谢!
您使用的do while not eof(1)循环语句,一直是我的弱项,不太会使用;另外,原来Text1(r) = a这样写语句也可以啊,惊爆我的眼球。
总之我是学习到了,再次感谢!
弱弱的有些小遗憾,您全新改写了源码,我原来语句中的行列语句,xRow = z * 14 + 1和 yLine = 1,在后续中对我的程序完善也是有用的,因为我不但要抓取行,还要抓取列,但总而言之,还是要非常感谢xzlxzlxzl。
1