本帖最后由 ao5212 于 2011-09-17 11:03:24 编辑

解决方案 »

  1.   


        Dim fs, f, s
        Set fs = CreateObject("Scripting.FileSystemObject")
        
        Set f = fs.OpenTextFile(sFileName, 1)
        Do
            s = f.readLine        If InStr(1, s, "-Line ") = 0 Then Print s '只显示没有 -Line 的行    Loop Until f.AtEndOfStream
        f.Close: Set f = Nothing: Set fs = Nothing
      

  2.   

    本帖最后由 bcrun 于 2011-09-20 14:28:57 编辑
      

  3.   

    3L代码中,没有定义变量,你自己定义一下,并且,假设是End-Line开始到Start-Line之间的行被跳过
      

  4.   

    可以用 Jet Engine 把你的文本文件当作数据库来读,在查询时滤掉你不需要的行。在与你的 txt 文件同一文件夹下,创建一个 Schema.ini 文件,内容:
    [filename.txt]
    ColNameHeader=False
    Format=Delimited("|")
    Col1=Text Width 6
    Col2=Text Width 7
    Col3=Text Width 22
    ......Dim cn As ADODB.Connection, rs AS ADODB.RecordsetSet cn = New ADODB.Connection
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\txtFilesFolder\;Extended  Properties=""text;HDR=No;FMT=Delimited"""Set rs = cn.Execute("SELECT * FROM filename.txt WHERE NOT F3 LIKE 'TO'")......
    Set rs = Nothing
    cn.Close
    Set cn = Nothing
      

  5.   

    每找到一个start,计数器+1
    每找到一个end,计数器-1计数器=0时,此行可操作。嵌套情况需要考虑下。
      

  6.   

    编程基础太差,在我这里简单问题变复杂了
                datfile = strFileName '对话框打开的文件
                j = 1
                ReDim arrHD(1 To Rows(datfile)) 
                  Open datfile For Input As #1
                Open "c:\check.txt" For Append As #2
                
                Do
                    Line Input #1, datline     
                    If InStr(datline, "HD") <> 0 Then 
                        If InStr(datline, "#") = 0 Then
                            arrHD(j) = datline '先将含HD的行放入arrHD数组中
                            j = j + 1
                        End If
                    End If
                Loop Until EOF(1)do循环中,如果在上述红色行中间的行,就不存入arrHD(j)中
      

  7.   

        Dim fs, f, s
        Dim b As Boolean
        b = True
        Set fs = CreateObject("Scripting.FileSystemObject")
        
        Set f = fs.OpenTextFile(sFileName, 1)
        Do
            s = f.readLine        If InStr(1, s, "-Line ") = 0 Then b = Not b
            If b Then Print s   'b=True 则处理需要的数据行    Loop Until f.AtEndOfStream
        f.Close: Set f = Nothing: Set fs = Nothing
    加一个变量 b,-Line 中间的行,因为b=Flase,所以不处理,不是中间的行,b=True,处理。
      

  8.   

    以此为准:    Dim fs, f, s
        Dim b As Boolean
        b = True
        Set fs = CreateObject("Scripting.FileSystemObject")
        
        Set f = fs.OpenTextFile(ssFileName, 1)
        Do
            s = f.readLine        If InStr(1, s, "-Line ") > 0 Then
                b = Not b
            Else
                If b Then Print s   'b=True 则处理需要的数据行
            End If    Loop Until f.AtEndOfStream
        f.Close: Set f = Nothing: Set fs = Nothing
      

  9.   

    以上代码的运行结果:
    For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m |  
    For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | |  
    For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m |  
    For M5|Adr 182|KD1 1 2| | |Z 0.00000 m |  
    For M5|Adr 183|KD1 1 07:38:231 2|Rb 2.80326 m |HD 12.719 m | |  
    For M5|Adr 184|KD1 1 07:38:261 2|Rb 2.80321 m |HD 12.716 m | |  
    For M5|Adr 185|KD1 1 JX02 07:38:551 2|Rf 0.36111 m |HD 13.107 m | |  
    For M5|Adr 186|KD1 1 JX02 07:39:001 2|Rf 0.36117 m |HD 13.109 m | |  
    For M5|Adr 187|KD1 1 JX02 07:39:00 2| | |Z 2.44210 m |  
    For M5|Adr 188|KD1 1 JX02 2|Sh 2.44209 m | | |  
    For M5|Adr 189|KD2 1 JX02 1 2|Db 12.72 m |Df 13.11 m |Z 2.44209 m |  
    For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m |  
    For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | |  
    For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | |  
    For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | |  
    For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | | 
      

  10.   

    For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m |   
    For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | |   
    For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m |   
    For M5|Adr 182|KD1 1 2| | |Z 0.00000 m |   
    For M5|Adr 183|KD1 1 07:38:231 2|Rb 2.80326 m |HD 12.719 m | |   
    For M5|Adr 184|KD1 1 07:38:261 2|Rb 2.80321 m |HD 12.716 m | |   
    For M5|Adr 185|KD1 1 JX02 07:38:551 2|Rf 0.36111 m |HD 13.107 m | |   
    For M5|Adr 186|KD1 1 JX02 07:39:001 2|Rf 0.36117 m |HD 13.109 m | |   
    For M5|Adr 187|KD1 1 JX02 07:39:00 2| | |Z 2.44210 m |   
    For M5|Adr 188|KD1 1 JX02 2|Sh 2.44209 m | | |   
    For M5|Adr 189|KD2 1 JX02 1 2|Db 12.72 m |Df 13.11 m |Z 2.44209 m |   

    For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m |   
    For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | |   
    For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | |   
    For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | |   
    For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |
    z_wenqian大大~~我是想把这个红色的也跳过,应该怎样操作?诶..我都觉得我有点烦了...
      

  11.   

    我只是贴出了很小部分数据,End-Line Start-Line中间的数据在我做数据处理时是无用数据
    思来想去,不一样的地方貌似就是End-Line Start-Line
      

  12.   


        Dim fs, f, s, n
        Dim b As Boolean
        b = True
        Set fs = CreateObject("Scripting.FileSystemObject")
        
        Set f = fs.OpenTextFile(sFileName, 1)
        Do
            s = f.readLine        If InStr(1, s, "-Line ") > 0 Then
                b = Not b
            Else
                If b Then
                    n = CInt(Split(Split(s, "|")(1), " ")(1))
                    If n < 180 Or n > 189 Then Print s 'b=True 且 Adr 不在180-189之间则处理需要的数据行
                End If
            End If    Loop Until f.AtEndOfStream
        f.Close: Set f = Nothing: Set fs = Nothing结果:
    For M5|Adr 177|KD1 32 JX02 18:04:45 1| | |Z 60.57092 m |  
    For M5|Adr 178|KD1 32 JX02 1|Sh 60.57092 m | | |  
    For M5|Adr 179|KD2 32 JX02 32 1|Db 566.66 m |Df 564.85 m |Z 60.57092 m |  
    For M5|Adr 192|KD1 0 JX02 3| | |Z 0.00000 m |  
    For M5|Adr 193|KD1 0##### 07:41:181 3|Rb 2.80504 m |HD 11.764 m | |  
    For M5|Adr 194|KD1 0##### 07:41:211 3|Rb 2.80506 m |HD 11.767 m | |  
    For M5|Adr 195|KD1 2##### 07:41:561 3|Rf 0.17338 m |HD 12.128 m | |  
    For M5|Adr 196|KD1 2##### 07:41:591 3|Rf 0.17335 m |HD 12.127 m | |