投稿日 | : 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 程度のサイズでも結構時間が掛かって
しまうので少しでも早くならない物かと考えてる所です。