Vb.net 返回null的Visual Basic Split()
从文件中读取和拆分的代码:Vb.net 返回null的Visual Basic Split(),vb.net,file,split,Vb.net,File,Split,从文件中读取和拆分的代码: Public Sub LoadAccount() currentfilereader = New StreamReader(filename) Dim Seperator As Char = " "c For count As Integer = 0 To NumUsers - 1 textstring = currentfilereader.ReadLine Dim words() As String = cu
Public Sub LoadAccount()
currentfilereader = New StreamReader(filename)
Dim Seperator As Char = " "c
For count As Integer = 0 To NumUsers - 1
textstring = currentfilereader.ReadLine
Dim words() As String = currentfilereader.ReadLine.Split(Seperator)
Username = words(0)
Password = words(1)
If words(2) = "1" Then
AccessGranted = True
Else
AccessGranted = False
End If
Users(count, 0) = Username
Users(count, 1) = Password
Users(count, 2) = AccessGranted
Next
currentfilereader.Close()
End Sub
登录代码:
Public Sub Login()
Dim InvalidUsername, InvalidPassword As Boolean
InvalidUsername = True
InvalidPassword = True
LoginName = Form1.tbun.Text
LoginPassword = Form1.tbpw.Text
For count As Integer = 0 To NumUsers - 1
If LoginName = Users(count, 0) Then
InvalidUsername = False
If LoginPassword = Users(count, 1) Then
InvalidPassword = False
CurrentUsername = LoginName
CurrentPassword = LoginPassword
CurrentAccessGranted = Users(count, 2)
loggedin = True
Else
MsgBox("Invalid Password")
End If
Else
MsgBox("Invalid Username")
End If
Next
End Sub
用于计算用户数的代码:
Public Sub NumberOfUsers()
currentfilereader = New StreamReader(filename)
NumUsers = File.ReadAllLines("Accounts.txt").Length
MsgBox("There are " & NumUsers & " users")
End Sub
我添加了一个MsgBox
来显示用户数量,以确保所有操作正常,返回值2,因为我当前在文本文件中有两行,“a1”和“b1”
但是,当此行运行时,Dim words()作为String=currentfilereader.ReadLine.Split(分隔符)
,它返回null
从计数中的
numuers
中减去1的目的是因为计数与数组一起从零开始。这意味着,如果我没有,它将检查3次,如果文件中只有2个用户。但我似乎无法找出问题所在以及返回null的原因。您为每个用户调用ReadLine
两次:
textstring = currentfilereader.ReadLine
Dim words() As String = currentfilereader.ReadLine.Split(Seperator)
这意味着对于第一个用户,您读取两行,而对于第二个用户,您不读取任何内容,从而导致空分割数组
替换
Dim words()作为字符串=currentfilereader.ReadLine.Split(分隔符)
与
Dim words()作为String=textstring.Split(分隔符)