Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 28.03.2014
Сообщений: 12
1

Проверка на наличие существующего логина

01.04.2014, 23:21. Показов 921. Ответов 2
Метки нет (Все метки)

Доброе время суток, дорогие форумчане. Пишу курсовую на С#, который плохо знаю. Помогите с такой проблемой: проверки существования логина при создании новой учетной записи.
Значит, есть форма регистрации. На ней 2 поля (логин и пароль типа ТекстБокс, естественно). В методе по нажатию на кнопке "ок" вот такой код:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
       private void OkRegButton_Click(object sender, EventArgs e)
        {
            string line;
            try
            {
                if ((textBox1.Text != "") && (textBox2.Text != ""))
                {
                    StreamReader sr1 = new StreamReader("./Other/Users.txt");
                    while ((sr1.ReadLine()) != null)
                    {
                        line = sr1.ReadLine();
                        sr1.ReadLine();
                        sr1.ReadLine();
                        if (line == textBox1.Text)
                        {
                            MessageBox.Show("Данный логин существует. Повторите снова");
                        }
                        else
                        {
                            sr1.Close();
                            Directory.CreateDirectory("./Profiles/" + textBox1.Text);   //создали папку
                    string fileName = "test.txt";
                    string sourcePath = @"./Data";
                    string targetPath = @"./Profiles/" + textBox1.Text + "/";
                    string sourceFile = System.IO.Path.Combine(sourcePath, fileName);
                    string destFile = System.IO.Path.Combine(targetPath, fileName);
                    if (System.IO.Directory.Exists(sourcePath))
                    {
                        string[] files = System.IO.Directory.GetFiles(sourcePath);
                        foreach (string s in files)
                        {
                            fileName = System.IO.Path.GetFileName(s);
             
                             destFile = System.IO.Path.Combine(targetPath, fileName);
                            System.IO.File.Copy(s, destFile, true);
                        }
                    }
                    else
                    {
                        MessageBox.Show("Исходный путь не существует!", "Ошибка!");
                    }
 
 
                    StreamWriter sw = new StreamWriter("./Other/Users.txt", true, Encoding.Default);
                    sw.WriteLine(textBox1.Text);
                    sw.WriteLine(textBox2.Text);
                    sw.WriteLine("");
                    sw.Close();
                    this.Close();
                    HelloForm first_form = new HelloForm();
                    first_form.Show();
                    Close();
                        }
 
                    }
                    sr1.Close();
                }
                else
                {
                    MessageBox.Show("Вы не ввели логин или пароль. Повторите...", "Ошибка");
                }
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }
            
        }
Этот фрагмент кода я хотел использовать как проерку на существование логина:
C#
1
2
3
4
5
6
7
8
9
10
StreamReader sr1 = new StreamReader("./Other/Users.txt");
                    while ((sr1.ReadLine()) != null)
                    {
                        line = sr1.ReadLine();
                        sr1.ReadLine();
                        sr1.ReadLine();
                        if (line == textBox1.Text)
                        {
                            MessageBox.Show("Данный логин существует. Повторите снова");
                        }
Но происходит ошибка "Чтение из закрытого TextReader невозможно". Думаю вообще, что структура слишком громоздкая и неправильная. Может, проверку на существование логина сделать в соответствующем событии текстбокса (в данном случае это textbox1)? (правда в каком - не знаю). Буду очень благодарен Вам за помощь. Спасибо
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.04.2014, 23:21
Ответы с готовыми решениями:

Проверка логина из формы на наличие логина в базе данных
Пожалуюста подскажите что у меня неправильно работает в коде. Ошибок вродебы нет. Вообщем код...

Не работает проверка на на наличие похожего логина у зарегистрированных пользователей
Здравствуйте! Собственно вот в чем вопрос: При регистрации есть проверка на наличие похожего...

Проверка формы "на лету" на наличие вводимого логина в MySQL
Хочу реализовать следующее: пользователь при регистрации вводит логин, и форма сразу проверяет,...

Проверить наличие логина в БД
$mysqli = connect_db(); $result = $mysqli->query("SELECT ListLogin FROM DataUser WHERE...

2
214 / 213 / 114
Регистрация: 14.01.2013
Сообщений: 459
03.04.2014, 13:44 2
Цитата Сообщение от Gektvtn935 Посмотреть сообщение
"Чтение из закрытого TextReader невозможно"
StreamReader, наверное)
Во-первых, не понятно где у Вас закрывается else?
Во-вторых, Вы после чтения первой же строчки закрываете Reader - в этом то и ошибка
C#
1
2
3
4
5
6
7
if (line == textBox1.Text)
{
    MessageBox.Show("Данный логин существует. Повторите снова");
}
else
{
 sr1.Close();
Закрывайте ридер после тела While. Я бы сделал так: Завёл булевскую переменную и если выполняется
C#
1
if (line == textBox1.Text)
Присвоить этой переменной true и прописать break; из цикла while. Дальше, после тела while Проверял бы если наша переменная true, то вывод MessageBox иначе - продолжаем работу, записываем в файл или что вы там делаете)
Цитата Сообщение от Gektvtn935 Посмотреть сообщение
Может, проверку на существование логина сделать в соответствующем событии текстбокса (в данном случае это textbox1)
Имхо по нажатию кнопки - это нормально, так что продолжайте в том же духе - дорабатывайте. По-уму, конечно, Логины и пароли в БД хранят, но у вас же курсовая, так что.. норм всё)

Добавлено через 6 минут
Цитата Сообщение от Gektvtn935 Посмотреть сообщение
C#
1
2
3
line = sr1.ReadLine();
sr1.ReadLine();
sr1.ReadLine();
Зачем вы читаете 3 раза?, нужно каждую строчку проверять или у вас структура файла такая - на каждой третьей строчке Login?
0
3 / 3 / 1
Регистрация: 21.11.2012
Сообщений: 31
03.04.2014, 13:51 3
Код проверки на непустое значение и на совпадение логина введите в процедуру обработки события Leave объекта textBox1.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.04.2014, 13:51

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Проверка существующего имени в ListBox
Добрый вечер. Друзья помогайте!!! На главной форме расположен ListBox со списком наименований баз...

Проверка существующего пользователя при регистрации
Всем доброго времени. Пилю форму регистрации в БД а для этого проверяю по имени,фамилии и отчеству...

Создать форму для ввода пользователем своих логина и пароля, наличие которых проверяется в БД
задача такая: создать форму для ввода пользователем своих логина и пароля, налачие которых...

Проверка логина
Всем привет, сделал форму авторизации и регистрации. Авторизуется регает. Но хочу поставить ...

Проверка логина
что-то вехат ь не как не могу что за прикол вот смотрите есть крипт регитсрации <? include...

Проверка логина
Всем привет. Опять возник вопрос по php, надеюсь на помощь добрых людей Есть форма регистрации. ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.