Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Incorrect reading of an array

I am working in c-sharp .net and I am working on creating a login screen for my project. I have a text file with login info for all the users. My c-sharp scrip reads that file to a string then cuts it up into two lists, _usernames and _passwords. When the user types their login info and hits login the _usernames[0] and _passwords[0] account info are the only ones that work. What I want it to do is look through all the _usernames for the inputted one, if it finds it then check the _password[same index as _usernames] and if both are the same as what the user submitted then it will add "true" to the richTextBox.

Why is it not correctly reading from the array?

This is my users.txt:

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

admin,test|
andrew,yeet|
zana,happy|

This is my c-sharp script:

using System;
using System.IO;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace BaseUserInterfase
{
    public partial class Login : Form
    {
        string path = Directory.GetCurrentDirectory() + "\\data\\users.txt";
        string data;
        string[] _usernames = new string[10];
        string[] _passwords = new string[10];

        public Login()
        {
            InitializeComponent();
        }

        private void Login_Load(object sender, EventArgs e)
        {
            GetLoginData();
        }

        private void btnLogin_Click(object sender, EventArgs e)
        {
            rtbTemp.Text = "";
            for(int i = 0; i < _usernames.Length; i++)
            {
                if(_usernames[i] == null)
                {
                    break;
                }

                rtbTemp.AppendText("\n" + _usernames[i]);
                rtbTemp.AppendText("\n" + tbUsername.Text.ToString());

                rtbTemp.AppendText("\n" + _passwords[i]);
                rtbTemp.AppendText("\n" + tbPassword.Text.ToString());

                if (_usernames[i] == tbUsername.Text.ToString())
                {
                    rtbTemp.AppendText("\nUsername true");
                    if (_passwords[i] == tbPassword.Text.ToString())
                    {
                        rtbTemp.AppendText("\nPassword true");
                        rtbTemp.AppendText("\ntrue");
                        return;
                    }
                }
            }
            rtbTemp.AppendText("\nfalse");
        }

        public void GetLoginData()
        {
            using (StreamReader streamReader = new StreamReader(path, Encoding.UTF8))
            {
                data = streamReader.ReadToEnd();
            }

            List<string> _data = data.Split('|').ToList();
            _data.RemoveAt(_data.Count - 1);

            rtbTemp.AppendText("\n");

            Array.Resize<string>(ref _usernames, _data.Count);
            Array.Resize<string>(ref _passwords, _data.Count);

            foreach (string _item in _data)
            {
                List<string> userdata = _item.Split(',').ToList();

                string username = userdata[0].ToString();
                string password = userdata[1].ToString();

                Console.WriteLine(_item);
                Console.WriteLine(username);
                Console.WriteLine(password);


                for(int i = 0; i < _data.Count; i++)
                {
                    if(_usernames[i] == null)
                    {
                        _usernames[i] = username;
                        _passwords[i] = password;
                        break;
                    }
                }
            }
        }

        private void btnExit_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }
    }
}

And this is an image of the login screen:
1

>Solution :

Your file contains carriage return characters. Remove them before you split its content

data = streamReader.ReadToEnd().Replace("\r\n", "");
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading