0

ユーザー名とパスワードとして「a a」を含むclients.txtファイルがあります。私が間違っていなければ、これはそれから読み取られ、それらがファイルに存在するかどうかを教えてくれるはずです。

編集:clients.txtファイルの2行目に、ユーザー名とパスワードとして「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();
4

2 に答える 2

3

あなたの while() ステートメントは行を飲み込んでいます。ReadLine() 呼び出しを本体内に移動する必要があります。

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

パスワードを平文でテキスト ファイルに入れないでください。

于 2012-05-02T23:21:04.433 に答える
2

while ステートメントで sr.Readline を呼び出すと、テキスト ファイルの最初の行が読み取られます (無視されます)。そのため、比較される最初の行は、sr.ReadLine への 2 回目の呼び出しの後のテキスト ファイルの 2 行目になります。

sr.ReadLine への呼び出しからの応答を常に取得できるように、コードをリファクタリングする必要があります。

于 2012-05-02T23:16:07.617 に答える