我不熟悉阅读和写入文本文件。我需要读取文件并将每个单元的数据存储在各自的数组中。
我的文字文件有这个字符:“|”用于列分隔符。第一列是基于字符串的,第二列和第三列是基于整数的。在dataGridView中有四列,第四列是第二列和第三列总和中的第二列百分比。
Imports System.IO
Public Class Form1
Dim teamName As String = ""
Dim gamesWon As Integer = 0
Dim gamesLost As Integer = 0
Dim percentOfGamesWon As Double = (gamesWon + gamesLost) * gamesWon / 100%
Sub reader()
Dim textLine As String = ""
Dim SplitLine() As String
Using objReader As New StreamReader("C:\Users\WORK\Documents\text files\ALE.txt")
Do While objReader.Peek() <> -1
teamName = objReader.ReadLine()
gamesWon = objReader.ReadLine()
gamesLost = objReader.ReadLine()
textLine = teamName & "|" & gamesWon & "|" & gamesLost & "|" & percentOfGamesWon
SplitLine = Split(textLine, " ")
Me.grdDisplay.Rows.Add(SplitLine)
Loop
End Using
End Sub
Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
reader()
End Sub
End Class
编辑:我更改了代码,因为我注意到我没有包含变量teamName,gamesWon,gamesLost和percentOfGamesWon
然而,我仍然有错误。我不能将gamejon和gamesLost使用objReader.Readline()。答案 0 :(得分:3)
您正在尝试将整个数据行分配给各个变量。相反,您需要拆分ReadLine
返回的值,并将部件转换为适当的数据类型。添加Option Strict On
也会有所帮助(无论是在文件顶部还是在项目编译选项中)。您还可以最小化变量的范围 - 它们不需要在类级别声明。
Sub reader()
Using objReader As New StreamReader("C:\Users\WORK\Documents\text files\ALE.txt")
Do While objReader.Peek() <> -1
Dim line As String = objReader.ReadLine()
Dim splitLine() As String = line.Split("|")
Dim teamName As String = splitLine(0)
Dim gamesWon As Integer = CInt(splitLine(1))
Dim gamesLost As Integer = CInt(splitLine(2))
Dim percentOfGamesWon As Double = gamesWon / (gamesWon + gamesLost) * 100
Me.grdDisplay.Rows.Add(teamName, gamesWon, gamesLost, percentOfGamesWon)
Loop
End Using
End Sub