2012-05-02 35 views
0

我有一個「a」作爲用戶名和密碼的client.txt文件。如果我沒有弄錯,應該從中讀取並告訴我它們是否存在於文件中。比較字符串從文件中讀入時的NullReferenceException?

編輯:在clients.txt文件的第二行我有「b b」作爲用戶名和密碼,他們工作正常。

產品圖位置:(新的用戶不能張貼圖片)

StreamReader sr = new StreamReader("clients.txt"); 
    int findIndex = -1; 
    string userpass = "#"; 
    while (findIndex == -1 && sr.ReadLine() != null) 
    { 
     findIndex = userpass.IndexOf(txtUserName.Text + " " + txtPassword.Password); 
     userpass = sr.ReadLine(); 
    } 
    sr.Close(); 
+0

需要看一些代碼。作爲文本 - 沒有代碼的圖像,請。 –

+0

由於調試器捕捉異常,您應該能夠查看該行上的控件和變量,並查看哪一個爲空。 –

+0

好點@dash - 沒有看到.Password!這也無濟於事! :o) –

回答

3

您while()語句吞噬線條。您需要在主體內移動ReadLine()調用:

while (findIndex == -1) { 
     userpass = sr.ReadLine(); 
     if (userpass == null) break; 
     findIndex = userpass.IndexOf(txtUserName.Text + " " + txtPassword.Password); 
    } 

請勿將密碼以明文形式放在文本文件中。

2

您對sr.Readline在while語句調用將讀取(和無視)文本文件的第一行,所以第一在第二次調用sr.ReadLine之後,被比較的行將成爲文本文件的第二行。

您需要重構代碼,以便始終捕獲對sr.ReadLine調用的響應。