txt文件的内容是这样的情况,数据很多(文本有60多兆),中间删了不少,挑了比较说明问题的部分:
  1        0.0141927   1     1     1     0         1  61     1
  1        0.0203083   8    10     1     0        11  65     1
  1       10.2855065   7   111     9    10       149  63     4
  1       10.2856590   8     3     2     0        21  63     1
  1       10.8628565   7     3     1     0         8  64     1
  1       11.0603703   8     2     9    10        59  72     1
  1      100.9921020   2     1     2     0        14  63     1
  1      101.4079153   8     2     1     0         5  64     1
  1      101.8000060   1     2     1     0         3  63     1
  1      102.9566797   8     3     3     0        43  61     1
  1      103.0686740   7     1     1     0         1  61     1
 主要要求是根据第三列的数据,把相同数据的行提取出来(第三列是1的行提取出来放在一起,直到是8的行也同样处理完).因为第二列数据字符大小有变化,用SPLIT语句空格分割后,第三列数据在第二列数据为百以上时是第12个数据,十以上是第13个数据,十以下时是第14个数据
我的程序是这样:
Private Sub Command1_Click()
    wenjian = "c:\110.txt"For i = 1 To 8                    '从一到八分别提取
   
    Open wenjian For Input As 1
    Do While Not EOF(1)
        Line Input #1, shujv
        b = Split(shujv, " ")     '按空格分割                If b(11) = "" Then           '这一部分是找第三列数据
                    If b(12) = "" Then
                        DUISHU = CDbl(b(13))
                    Else
                        DUISHU = CDbl(b(12))
                    End If
                Else
                    DUISHU = CDbl(b(11))
                End If
                
                If DUISHU = i Then            '判断
                    duchu = duchu + shujv + vbCrLf    '提取数据
                    
                End If
    
    
   
    Loop
    Close #1
    Next
    Open wenjian + ".txt" For Output As 2
    Write #2, duchu                          '写入数据
    Close #2
MsgBox "OK"                                  '结束提示
End Sub
程序本身没有基本毛病,可以用,但处理文件速度太慢,也极为耗费资源.最主要是时间,整理一个6M的TXT一个小时都没弄完.还有一个60兆的文件等着呢...
我能力有限,请高手来帮忙修改一下,多谢多谢.

解决方案 »

  1.   

    本来vb处理文件就很慢 你还60m??狂晕
      

  2.   

    同志你的算法也太差了,60m的数据你要在内存中重复分配内存,在是要很长时间的.具体算法可以很简单,时间关系不能多写了,来8个数组,直接以列3 为数组下标像数组中加值,内存直接分也与文件同样大小,用mid向指定位置写数据.....
      

  3.   

    呵呵,VB我刚学,初级入门,我这样改了一下,是不是这个意思:
    Private Sub Command1_Click()
        wenjian = Text1.Text   
        Open wenjian For Input As 1
        Do While Not EOF(1)
            Line Input #1, shujv
           
            b = Split(shujv, " ")
           ' a = UBound(b)
                    If b(11) = "" Then
                        If b(12) = "" Then
                            DUISHU = CDbl(b(13))
                        Else
                            DUISHU = CDbl(b(12))
                        End If
                    Else
                        DUISHU = CDbl(b(11))
                    End If
                    duchu(DUISHU) = duchu(DUISHU) + shujv + vbCrLf    Loop
        Close #1
       For i = 1 To 8
        j = Str(i)
        Open wenjian + "-" + j + ".txt" For Output As 2
        Write #2, duchu(i)
        Close #2
       Next
    MsgBox "OK"
    End Sub简单点,我将处理的结果分成了八个TXT文件,程序算1M以下的速度确实比以前快了,因为读文件没有重复.不过算大的时候,我用任务管理器发现程序总是未响应.还是请大家多多指点