2016-04-23 110 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 –