[リストへもどる]
一括表示

投稿時間:2003/11/14(Fri) 18:08
投稿者名:ワタル
Eメール:
URL :
タイトル:
条件に合った行の削除・・・
テキストファイル内で、行の先頭の文字列「xxx」を含んでいる行だけを削除したいのですが
色々調べてもどうしても分かりませんでした。

それと、このテキストファイル内の行数が30万行くらいあるので、
途中で1000行とかで区切って読み込んだ方がいいのでしょうか。
どうかよろしくお願いします。

投稿時間:2003/11/14(Fri) 20:24
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re: 条件に合った行の削除・・・
オーソドックスな方法なら下記のようになりますが、30万行となると相当時間がかかる
ので、早くするには工夫が必要になってきます。
因みに1行当りの文字数はどの位・全体のファイルサイズは **MB

Private Sub Command1_Click()
    Dim TxtLine   As String
    Dim MyString  As String
    Dim lngFileNo As Long
    lngFileNo = FreeFile
    Open "c:\sampl.txt" For Input As #lngFileNo
    Do Until EOF(lngFileNo)
        Line Input #lngFileNo, TxtLine
        If InStr(TxtLine, "xxx") <> 1 Then
            MyString = MyString & TxtLine & vbCrLf
        End If
    Loop
    Close #lngFileNo
        
    '保存処理
    lngFileNo = FreeFile
    Open "c:\sample1.txt" For Binary Access Write As #lngFileNo
    Put #lngFileNo, , MyString
    Close #lngFileNo
End Sub

投稿時間:2003/11/15(Sat) 08:44
投稿者名:ワタル
Eメール:
URL :
タイトル:
Re^2: 条件に合った行の削除・・・
おはようございます。
レスありがとうございます。
このプログラムは社内のデータを纏めるだけなので、
早さに関しては時間かかってもいいと言われました^^;
それと、1行の文字数は空白も含めて80文字固定になっていて、
全体のファイルサイズはテキストファイルで27.3MBです。

投稿時間:2003/11/15(Sat) 18:27
投稿者名:KG
Eメール:
URL :
タイトル:
Re^3: 条件に合った行の削除・・・
行頭が「×××」となっているならば
下記のような方法もとれますね。

Private Sub Command1_Click()
    Dim fnoR   As integer
    Dim fnoW   As integer
    Dim ReadLine As String

    fnoR = FreeFile
    Open "c:\sampl.txt" For Input As #fnoR
    fnoW = FreeFile
    Open "c:\sampl_rslt.txt" For Output As #fnoW

    Do Until EOF(fnoR)
        Line Input #fnoR, ReadLine
        If Left$(ReadLine,3) <> "×××" Then
            Print #fnoW, ReadLine
        End If
    Loop

    Close #fnoR
    Close #fnoW
End Sub