[英]Visual Basic Split() returning null
从文件读取和拆分的代码:
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,因为我当前在文本文件中有2行“ aa 1”和“ bb 1”。
但是,当此行运行时, Dim words() As String = currentfilereader.ReadLine.Split(Seperator)
,它将返回null。
从计数中的NumUsers
中减去1的目的是因为计数与数组一起从零开始。 这意味着如果我不这样做的话,如果文件中只有2个用户,它将检查3次。 但我似乎无法弄清楚什么地方出了问题以及为什么它返回null。
您为每个用户两次调用ReadLine
:
textstring = currentfilereader.ReadLine
Dim words() As String = currentfilereader.ReadLine.Split(Seperator)
这意味着对于第一个用户,您读了两行,而对于第二个用户,您什么也没读,导致空的拆分数组。
更换
Dim words() As String = currentfilereader.ReadLine.Split(Seperator)
同
Dim words() As String = textstring.Split(Seperator)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.