我正在为父亲写一个程序,这样他就能更好地追踪他使用的汽油量。基本上,它从.txt文件中获取一行,并将其拆分为3个值,用于执行基本计算。然后将计算和值放入Listview中以便于查看。您可能从磁贴中推断出的问题是我的程序在代码的第31行崩溃,在读取.txt文件中的所有数据后,它尝试为tempstring2分配一条不存在的行。然后它会发出System.IO.IOException
错误消息。我试图编写更多代码来防止它,但无济于事。任何帮助将不胜感激。这是.txt文件的格式。
编辑:既然我知道问题是什么,我想用DateDiff
来比较两个日期,但我无法将第二个日期与第一个日期进行比较,因为我不知道如何阅读下一个日期没有做另一个LineInput
的.txt文件。我基本上想要在一个循环中将Sat 11 Jan 2014
与Thu 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
这是我的新代码:
{{1}}
答案 0 :(得分:0)
您正在为每个While Not EOF(filenum)
tempstring1 = LineInput(filenum)
tempstring2 = LineInput(filenum)
因此,如果行数为奇数,则第二行LineInput
将超出EOF
。