逐行读取TXT文件(VB 2010)

时间:2016-04-23 05:24:15

标签: vb.net

我有一个程序被编写为用户名/密码创建者,并且我正在尝试制作一个部分,用于确定是否已输入用户名,并通知用户。它似乎没有工作。我的代码如下:

z = File.OpenText(a)
    Do Until z.EndOfStream() = True
        Dim password As String
        password = CStr(z.ReadLine() & vbCrLf)
        If password = TextBox1.Text Then
            errors = errors + 1
            msgPrompt = msgPrompt & "The username you entered, " & TextBox1.Text & " is already taken."
        End If
        If errors > 1 Then
            TextBox5.Text = errors & " errors occured."
        ElseIf errors = 0 Then
            TextBox5.Text = "No errors!"
        Else
            TextBox5.Text = errors & " error occured."
        End If

        If errors >= 1 Then
            Button2.Enabled = True
        Else
            Button2.Enabled = False
        End If
    Loop

密码在.txt文件中逐行存储,所以基本上我希望程序逐个遍历每个条目并查看它是否与用户输入的内容相匹配。如果我做错了什么,请通知我,我很乐意让这个脚本工作。

1 个答案:

答案 0 :(得分:1)

假设您的问题的标题是正确的,您的代码中的变量名称不正确 - 这不是非常重要,但它会混淆任何在6个月内回来维护软件的人。此外,当您的代码正确运行时,由于所有用户名都是唯一的,因此无需返回错误数。

它比原始代码长,但TextExists函数可用于打开您选择的文件,例如密码文件和用户名文件 - 尽管在这种情况下您的用户名和密码可以更好地存储在一个文件中。

'Opens the file and if it contains the input text, returns True. Otherwise returns false
Private Function TextExists(filename As String, inputText As String) As Boolean
    Dim z As StreamReader = File.OpenText(filename)
    Dim fileText As String
    Dim msgPrompt As String = ""
    Do Until z.EndOfStream() = True
        fileText = CStr(z.ReadLine())
        If inputText = fileText Then
            Return True
        End If
    Loop
    Return False
End Function

Private Sub CheckUserName()
    If TextExists(a, TextBox1.Text) Then
        MessageBox.Show("Username Already Exists")
        Button2.Enabled = False
    Else
        Button2.Enabled = True
    End If
End Sub

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    CheckUserName()
End Sub

对于严重的密码存储,用户名和密码在保存之前应加密,并在加载时解密。以纯文本形式保存这样的敏感信息总是一个非常糟糕的主意。