2014-10-10 53 views
0

我正在爲我父親寫一個程序,以便他能更好地跟蹤他使用的汽油量。基本上它從.txt文件中抓取一行,並將其分成3個值,用於執行基本計算。然後將計算和值放入Listview中以便查看。您可能從瓦片推斷出的問題是,我的程序在代碼的第31行崩潰,在它讀取.txt文件中的所有數據之後,它會嘗試將tempstring2分配一條不存在的行。然後它吐出一條System.IO.IOException錯誤消息。我試圖寫更多的代碼來防止它,但無濟於事。任何幫助將不勝感激。這是.txt文件的格式。程序試圖讀取不存在的行

編輯:現在我知道問題是什麼,我想用DateDiff來比較兩個日期,但是我無法比較第二個日期和第一個日期,因爲我不知道如何讀取下一個日期。 txt文件沒有做另一個LineInput。我基本上想要在一個循環中將Sat 11 Jan 2014Thu 23 Jan 2014進行比較,並且將其與LineInput進行比較。

Sat 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 
+0

我知道問題是什麼,我意識到現在發生了什麼。然而,另一個問題已經出現在它的地方。 – 2014-10-10 07:13:16

回答

0

您正在閱讀2線各While Not EOF(filenum)

tempstring1 = LineInput(filenum) 
tempstring2 = LineInput(filenum) 

所以,如果行數爲奇數,第二LineInput將讀取超出EOF