テキストファイルをLine Inputで読み込んで語句を検索して
ヒットすればその後の数行のデータを読み込むという動作をさせているのですが
データが抜けている個所がいくつかあったのでその部分をの処理を確かめてみると
検索にヒットした後の読込で先頭に戻って読み込んでいることがわかりました。
この現象は何が原因なのでしょうか?ある1部分だけこういう処理が行われているようで、大半はきちんと正常に処理されるので余計に原因がわかりません。
>検索にヒットした後の読込で先頭に戻って読み込んでいることがわかりました。
これはどのようにして確認されたのでしょうか?
ソースなどを書いて「ここにブレークポイントを置いて、この時にこの値が
こうだったから、総判しました」という様な説明だとありがたいです。
×総判しました
○そう判断しました
FileNo = FreeFile
Do While Not EOF(3)
If strProjectName = ProjectName Then
Exit Do
End If
If Left(flvReadLine3, 13) = "Project Name:" Then
strProjectName = Trim(Mid(flvReadLine3, 14))
End If
Line Input #FileNo, flvReadLine3
Loop
If EOF(3) Then
Close #FileNo
Exit Sub
End If
Do Until flvReadLine3 <> ""
If EOF(3) Then
Close #FileNo
Exit Sub
End If
Line Input #FileNo, flvReadLine3
Loop
説明不足でした。上のようなソースで最後のDo Untilの部分の
処理で必要のない行を読み飛ばしてデータを取得するのですが、
その際のLine Inputの部分でテキストファイルの先頭の行を
読み込んでしまうのです。
なおブレークポイントを設置して処理を行い判断しました。
編集 削除ファイルを開いている部分が記述されていないのでなんともいえませんが
開いたファイルのファイル番号はEOF関数で判定している3に固定されて
いるんでしょうか?
また、FileNo変数で取得したファイル番号が使われているようですが
それとファイル番号3で開かれたファイルの関係が上記ソースでは
今ひとつつかみきれません。
Line Inputで行を読んでいく処理は下記のような内容の記述になっているん
でしょうか?
FileNo=FreeFile
Open("file name") For Input As #FileNo
Do While Not EOF(FileNo)
Line Input #FileNo,strLineData
'その他の処理
Loop