繁体   English   中英

Visual Basic Split()返回null

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM