0

私はこれを理解することはできません。私のプロジェクトは、テキスト ファイルを取得し、それをプログラムに読み込み、値を変更してから、そのテキスト ファイルに書き直すことです。プログラムは 1 回目は動作しますが、2 回目に実行すると、ファイルから読み取るために使用する for-next ループで、2 行目にテキストがないと表示されます。コードは最初のループの後で停止し、アプリケーションを起動します。誰が何がうまくいかないのか考えていますか?

私が使用する StreamReader ループは次のとおりです。

    Dim inventoryReader As New StreamReader("Inventory.txt")
    Dim line As String
    Dim inventorycounter As Decimal = 0
    Do Until inventoryReader.EndOfStream
        line = inventoryReader.ReadLine()
        inventoryinfo = line.Split(ControlChars.Tab)
        inventory(inventorycounter, 0) = inventoryinfo(0)
        inventory(inventorycounter, 1) = inventoryinfo(1)
        inventorycounter += 1
    Loop
    inventoryreader.close()

これは私が使用する StreamWriter ループです。

    Dim output As New StreamWriter("Inventory.txt")
    For outputcounter As Integer = 0 To 16
        output.WriteLine(inventory(outputcounter, 0) & ControlChars.Tab & inventory(outputcounter, 1) & ControlChars.Cr)
    Next
    output.WriteLine(inventory(17, 0) & ControlChars.Tab & inventory(17, 1))
    output.Close()

問題は、プログラムが ControlChars.Cr を 2 回目に読み取らないことだと思いますが、CrLf、Lf、および Nextline を試しましたが、何も機能しませんでした。

助けてくれてありがとう!

4

1 に答える 1

1

それは正しくありません。あなたのプログラムは Cr + Cr + Lf をテキスト ファイルに書き込みます。StreamReader を混乱させると、最初の Cr が行末記号であると見なされます。そのため、 inventoryinfoのインデックスを作成すると、空の行、kaboom が読み取られます。

コードからControlChars.Crを削除します。StreamWriter.WriteLine() は助けを必要としません。すでに適切な行終端記号を書き込んでいます。

于 2013-11-10T11:04:51.010 に答える