程序试图读取那些不存在的行

时间:2014-10-10 05:23:28

标签: vb.net visual-studio-2012 ioexception eof file-processing

我正在为父亲写一个程序,这样他就能更好地追踪他使用的汽油量。基本上,它从.txt文件中获取一行,并将其拆分为3个值,用于执行基本计算。然后将计算和值放入Listview中以便于查看。您可能从磁贴中推断出的问题是我的程序在代码的第31行崩溃,在读取.txt文件中的所有数据后,它尝试为tempstring2分配一条不存在的行。然后它会发出System.IO.IOException错误消息。我试图编写更多代码来防止它,但无济于事。任何帮助将不胜感激。这是.txt文件的格式。

编辑:既然我知道问题是什么,我想用DateDiff来比较两个日期,但我无法将第二个日期与第一个日期进行比较,因为我不知道如何阅读下一个日期没有做另一个LineInput的.txt文件。我基本上想要在一个循环中将Sat 11 Jan 2014Thu 23 Jan 2014进行比较,并将LineInputSat 11 Jan 2014,446.0,32.50 Thu 23 Jan 2014,566.2,42.08 Wed 05 Feb 2014,535.4,39.27 Sun 16 Feb 2014,486.2,36.10 Thu 27 Feb 2014,536.4,41.36 etc... 进行比较。

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles btnTest.Click

    Dim filenum As Integer = FreeFile()
    Dim tempstring As String
    Dim temp As String
    Dim temparray(2) As String
    Dim date1, date2 As Date
    Dim date3 As String

    FileOpen(filenum, "Stats.txt", OpenMode.Input)

    While Not EOF(filenum)

        tempstring = LineInput(filenum)
        temp = tempstring
        temparray = Split(temp, ",", -1)
        date1 = temparray(0)
        date3 = DateDiff(DateInterval.Day, date2, date1)

        Dim stats1 As New ListViewItem(temparray(0), 0)
        stats1.SubItems.Add(temparray(1))
        stats1.SubItems.Add(temparray(2))
        stats1.SubItems.Add(FormatNumber(temparray(2) / (temparray(1) / 100), 2))
        stats1.SubItems.Add(FormatNumber(temparray(1) / temparray(2), 2))
        stats1.SubItems.Add(FormatNumber(temparray(1) / temparray(2) * 50, 2))
        stats1.SubItems.Add(date3)

        lvwStats.Items.Add(stats1)

        For i As Integer = 0 To lvwStats.Columns.Count - 1
            lvwStats.Columns(i).Width = -2
        Next i

    End While

End Sub
End Class

这是我的新代码:

{{1}}

1 个答案:

答案 0 :(得分:0)

您正在为每个While Not EOF(filenum)

阅读2行
tempstring1 = LineInput(filenum)
tempstring2 = LineInput(filenum)

因此,如果行数为奇数,则第二行LineInput将超出EOF