私はvb.netを使用してテキストファイルを読み込み、一致するレコードがあるかどうかを確認し、そのレコードを取り出して書き込みます優れています。vb.net - r.peek()> = 0行= r.readline()
しかし、ピークループでは、ファイルの最後まで読み込みます。私は2つのピークループを持っています - 外側のピークループは項目を探し、それを見つけるために内側のループサーチを行います。
ピークループを停止し、外側ループが停止する場所を継続できますか?これは私のコードの例です。両方の検索ループの外側でforループを実行して、外側のループが停止する場所を続行しますが、どちらかが正しいとは限りません。おかげ
For i = 1 To t_idex
rder.BaseStream.Seek(0, IO.SeekOrigin.Begin)
rder.DiscardBufferedData()
Do While rder.Peek() >= 0
line = rder.ReadLine()
r_idx += 1
st_outer += 1
m = Mid(line, 3, 7)
P = Mid(line, 19, 7)
b= Trim(Mid(line, 34, 14))
If Len(b) = 14 Then
Do While rder.Peek() >= 0
line2 = rder.ReadLine()
m2 = Mid(line2, 3, 7)
P2 = Mid(line2, 19, 7)
b2 = Trim(Mid(line2, 34, 14))
If b = b2 Then
cnt_dups += 1
End If
r_idx += 1
Loop
End If
i = st_outer
Loop
Next
は、あなたがより良いあなたが欲しいものを説明することができますが達成するためにここに?何かを見つけるコードはどこですか?内側のループは、ファイルの終わりまで読み込みを行い、何かを見つけたらそのループを止める条件はありません。 – Steve
なぜこれは複雑ですか?行を読んで、必要なものかどうか、ループを終了するか、ファイルの最後に到達するまで調べます。 – dbasnett
@steveコードを更新しました。外側のループは、bのlenが14であることを発見します。内側のループに入る場合、外側のループがbのlenを見つける場所からファイル全体をループし、bとb2の一致があるときは両方のレコードを書き込みます(これを行うためのコードはまだ更新されていません)。ファイルの終わりまでこれを行います。その時点から何が起こるかは、外側のループに行き、途中で停止し、インクリメントして、外側のループがeofに完了するまで、次の検索を行うと想定されるときに、両方のループが実行され、完全に終了することです。あなたが私の言いたいことを知っていたらいいなあ – Johnseito