Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 返回null的Visual Basic Split()_Vb.net_File_Split - Fatal编程技术网

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(分隔符)