2016-04-23 111 views
-2

我有一个程序写成用户名/密码创建者,并且有一个节我尝试做,它将确定输入的用户名是否被采用,以及通知用户。它似乎没有工作。我的代码如下:逐行读取TXT文件(VB 2010)

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文件一行行,所以基本上我想要的程序通过一个走过去的每个条目之一,看它是否符合用户输入的内容。如果我做错了,请告诉我,我很想让这个脚本工作。

+2

你想在这里做什么?首先,当你逐行阅读文件时,你不需要在该行中添加'vbCrLf'。第二:为什么你考虑每一行与你的密码不符?所以,请解释一下你想要做什么才能让这里的人能够帮助你。另外你也可以考虑使用[Dictionary](https://msdn.microsoft.com/en-us/library /xfhwa508(v=vs.110).aspx)进行快速匹配。 –

回答

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 

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

+0

非常感谢!我知道我需要对这些文件进行加密/解密,但我不知道该怎么做。任何参考? – David

+0

https://msdn.microsoft.com/en-us/library/ms172831.aspx ..或.. http://www.codeproject.com/Articles/1086643/Cryptography-in-NET-for-Beginners –