VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 2003/12/17(Wed) 19:37
投稿者Tomo
Eメール
URL
タイトルAtEndOfStream について

初めて投稿させて頂きます Tomo と申します。
過去 Log ある程度拝見させて頂きましたが、該当する内容が無い
様でしたので質問させて頂きます。

表題の件でお聞きしたい事があるのですが、Loop の中に Loop を
入れて両方で AtEndOfStream を使用した場合、内側 Loop を抜け
た後(最終行迄読み終わり)外側 Loop により再度内側 Loop に入
った場合、既に最後迄読み終わっている為飛ばされて仕舞います。

    ' 外側 Loop
    Do Until objFile.AtEndOfStream
        ' 1行づつ変数に読み込みます。
        strTextLine = objFile.ReadLine
        fndItem = Array(strTextLine)

        ' 内側 Loop
        Do Until objKey.AtEndOfStream
            fndKey = objKey.ReadLine
            fndItem = Filter(fndItem, fndKey, False, vbTextCompare)
        Loop
            
        For i = LBound(fndItem) To UBound(fndItem)
            Print #intTempNo, fndItem(i)
        Next i
    Loop

処理内容としては、Log File(text) から別の File に記述されている
Keyword 群を含む行を省いて出力する、という物なのですが、上記の
理由により上手く行ってくれませんでした。
何とか原因が分かったので、対処として内側 Loop の手前に

    Set objKey = objKeySystem.OpenTextFile(strKeyFile)

と毎回 Set し直す事で何とか意図した動作を出来る様になりました。

前置きが長くなって仕舞いましたが、お聞きしたい内容というのは
AtEndObStream を繰り返す際、再度最初の行から読み返す様にする
のにもっと良い方法はありませんでしょうか?
この処理をした場合、数 MB 程度のサイズでも結構時間が掛かって
しまうので少しでも早くならない物かと考えてる所です。


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -