Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/16: Рейтинг темы: голосов - 16, средняя оценка - 4.94
1 / 1 / 0
Регистрация: 12.02.2020
Сообщений: 66
1

Сравнение элементов с текстом в поле

04.04.2020, 15:35. Показов 3136. Ответов 36

Author24 — интернет-сервис помощи студентам
Проблема сравнения текста в кнопке с текстом в текстовом документе,
VB.NET
1
2
3
4
5
6
   answers() As String = IO.File.ReadAllLines("C:\Users\ravil\Desktop\Курсовая работа\answers.txt ", System.Text.Encoding.UTF8)
Dim Proverka2 As String
        For i = 1 To 16
            Proverka2 = answers(i)
            If Proverka2 = Button3.Text Then
                Button3.BackColor = Color.Green
Условие не выполняется
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.04.2020, 15:35
Ответы с готовыми решениями:

Сравнение текста из файла и сравнение с текстом в программе char - Dev C++
Доброго времени суток! Имеется код программы: ifstream test("primer.txt"); char awm = "kod";...

Редактируемое поле с текстом
Подскажите пожалуйста, мне нужен скрипт, для создания динамически редактируемого текстового поля,...

Работа с текстом в поле Memo
Помогите плиз с заданием. Нужно написать код к программе, которая позволяет найти в тексте слова...

Rt-поле с текстом и аттачами в веб
Привет! Кто сталкивался - как правильно организовать работу с ричтекст-полем, содержащим текст и...

36
5 / 4 / 1
Регистрация: 10.02.2016
Сообщений: 49
08.04.2020, 11:51 21
Author24 — интернет-сервис помощи студентам
Rav26, Жесть )))
0
1530 / 1478 / 322
Регистрация: 03.10.2012
Сообщений: 1,517
08.04.2020, 11:53 22
Rav26, скиньте проект целиком, как вас просили. Вряд ли кому-то будет интересно моделировать эту, как вы правильно выразились, "кашу". То, что сразу бросается в глаза: зачем вы уничтожаете кнопки, если используете их текст как данные (что уже само по себе неправильно).
0
5 / 4 / 1
Регистрация: 10.02.2016
Сообщений: 49
08.04.2020, 12:01 23
Rav26, Создаете Класс
VB.NET
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
Public Class ClassButt
    Public name_Butt As String
    Public inx_Butt As String
    Public ckop As Button
    Public name As Label
 
    Public Sub add(levo As Integer, visota As Integer)
        ckop = New Button
        ckop.Left = levo
        ckop.Top = visota
        ckop.Height = 372
        ckop.Width = 48
 
        ckop.FlatStyle = FlatStyle.Popup
        ckop.Visible = True
        ckop.Image = My.Resources._11
 
        nam = New Label
        nam.Left = levo + 15
        nam.Top = visota + 320
        nam.Visible = True
        nam.AutoSize = True
        nam.BackColor = Color.Transparent
        nam.ForeColor = Color.Green
        nam.Text = 0
        nam.Font = New System.Drawing.Font("Microsoft Sans Serif", 14, FontStyle.Bold)
        Fest_form.Panel1.Controls.Add(nam)
        nam.BringToFront()
 
 
        AddHandler ckop.MouseMove, AddressOf ckop_MouseMove
 
    End Sub
    Private Sub ckop_MouseMove(ByVal send As Button, ByVal e As MouseEventArgs)
 
    End Sub
End Class
0
1976 / 1410 / 365
Регистрация: 26.06.2017
Сообщений: 4,009
08.04.2020, 12:02 24
Содержание файла 1.txt прям напрашивается под структуру XML.
Структурно прога сделана ужасно. То, что происходит в Form.Load зачем?
Я сделал бы так:
1. в Form.Load грузим вопросы и ответы в массив структур. Структура содержит: вопрос, варианты ответов и номер правильного ответа. Затем запускаем процесс опроса. Устанавливаем счётчик вопросов на 1. Выполняем п.2.
2. обновляем форму (отдельной процедурой) из массива структур меняя текст в 4-х кнопках (кнопки ответов) и текст вопроса основываясь на текущем значении счётчика вопросов. Ждём клика по кнопкам.
3. в обработчике (один на все 4) клика по кнопкам ответов выполняем проверку правильности ответа, т.е. если номер (хранимый либо в Tag, либо в Name) кнопки совпал с номером правильного ответа, то увеличиваем общее число правильных ответов. Увеличиваем счётчик вопросов. Вызываем обновление формы (выполняем п.2). Или выполняем подведение итогов при достижении конца массива вопросов выполнив п.4. По результатам проверки ответа можно, например помигать цветом кнопки (используя таймер) или ещё как нибудь указать на правильность/неправильность ответа.
4. при клике по служебным (не вопросным) кнопкам выполняем подведение итогов и запись результатов в файл.
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
08.04.2020, 12:26 25
Rav26, собрал из каши проект, вставил проверку как я присылал, все работает, в итоге вопрос, почему вы говорите что ничего не работает, если даже не испытывали то, что вам предложили?
0
2615 / 2542 / 527
Регистрация: 17.02.2019
Сообщений: 4,251
08.04.2020, 20:52 26
Rav26, вот пример на первую кнопку. Дальше также для каждой кнопки согласно твоего кода.
как то так
VB.NET
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
 Dim i As Integer = 0 ' первый ответ, !второй +1 и т.д. и т.п.
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If answers(i) = Button1.Text Then 
    ' или так
     'If answers(i).Contains(Button1.Text) Then
            Button1.BackColor = Color.Green
            Button1.Enabled = False
            Button2.Enabled = False
            Button3.Enabled = False
            Button4.Enabled = False
            Button8.Visible = True
            Button8.Text = "Вперёд"
            i += 1
        Else
            Button1.BackColor = Color.Red
            Button1.Enabled = False
            Button2.Enabled = False
            Button3.Enabled = False
            Button4.Enabled = False
            Button8.Visible = True
            Button8.Text = "Итоги"
            i = 0
        End If
    End Sub
Добавлено через 18 минут
или так
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim i As Integer = 0 ' первый ответ. Второй +1 и т.д. и т.п.
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If answers(i) = Button1.Text Then ' ИЛИ If answers(i).Contains(Button1.Text) Then
            Button1.BackColor = Color.Green
            Button8.Visible = True
            Button8.Text = "Вперёд"
            i += 1
        Else
            Button1.BackColor = Color.Red
            Button8.Visible = True
            Button8.Text = "Итоги"
            i = 0
        End If
        YouAnswer()
    End Sub
    Function YouAnswer()
        Button1.Enabled = False
        Button2.Enabled = False
        Button3.Enabled = False
        Button4.Enabled = False
        Return Me
    End Function
Добавлено через 18 минут
чуть сокращенный
Кликните здесь для просмотра всего текста

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Dim i As Integer = 0 ' первый ответ. Второй +1 и т.д. и т.п.
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If answers(i) = Button1.Text Then ' ИЛИ If answers(i).Contains(Button1.Text) Then
            Button1.BackColor = Color.Green
            Button8.Text = "Вперёд"
            i += 1
        Else
            Button1.BackColor = Color.Red
            Button8.Text = "Итоги"
            i = 0
        End If
        YouAnswer()
    End Sub
    ' так защита если второй раз нажать
    Function YouAnswer()
        Button8.Visible = True
        Button1.Enabled = False
        Button2.Enabled = False
        Button3.Enabled = False
        Button4.Enabled = False
        Return Me
    End Function
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
08.04.2020, 22:08 27
January29, не совсем понял как это должно работать, объясните?
0
2615 / 2542 / 527
Регистрация: 17.02.2019
Сообщений: 4,251
08.04.2020, 22:43 28
Orlangur,
при нажатии на кнопку с ответом
так как ответ первый под номером 0 в массиве значит i = 0
сравниваем ответ answers(i) с текстом кнопки Button.Text если
верно тогда красит в зеленый, иначе в красный
функция отключает все кнопки с ответами , чтобы второй раз не нажали ,а то переменная i ставит 0
ну и возврат из функции, кнопку Button8 делает видимой, и пишет Вперед или Итоги
как то так
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
08.04.2020, 23:02 29
January29, то есть i перед каждым последующим вопросом должен перезадаваться? Не понял все равно. И зачем нужна функция, если возвращаемое значение нам не нужно? Лучше сделать процедуру
0
2615 / 2542 / 527
Регистрация: 17.02.2019
Сообщений: 4,251
08.04.2020, 23:33 30
Orlangur, лучше процедуру ,я так на скорую руку сделал .i да если ответ верен то ответ следущий из массива из answers

Добавлено через 4 минуты
так лучше будет
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Dim i As Integer = 0 ' первый ответ. Второй +1 и т.д. и т.п.
 
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        If answers(i) = Button1.Text Then ' ИЛИ If answers(i).Contains(Button1.Text) Then
            Button1.BackColor = Color.Green
            Button8.Text = "Вперёд"
            i += 1
        Else
            Button1.BackColor = Color.Red
            Button8.Text = "Итоги"
            i = 0
        End If
        YouAnswer()
    End Sub
    ' так защита если второй раз нажать
    Sub YouAnswer()
        Button8.Visible = True
        Button1.Enabled = False
        Button2.Enabled = False
        Button3.Enabled = False
        Button4.Enabled = False
    End Sub
0
1976 / 1410 / 365
Регистрация: 26.06.2017
Сообщений: 4,009
09.04.2020, 01:52 31
Склепал проектик на скорую руку, допилите если понравится.
Вложения
Тип файла: zip Millionaire.zip (62.2 Кб, 12 просмотров)
1
1 / 1 / 0
Регистрация: 12.02.2020
Сообщений: 66
09.04.2020, 12:41  [ТС] 32
Вот сам проект. Зачем мне врать, проверял я ваши варианты, совпадают с моими же действиями, поэтому и обратился за помощью, т.к. в коде по мне всё было нормально, спасибо за помощь)0
Вложения
Тип файла: 7z Курсовая работа.7z (902.1 Кб, 5 просмотров)
0
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
09.04.2020, 14:58 33
Лучший ответ Сообщение было отмечено Rav26 как решение

Решение

Rav26, касательно вашего кода замените обработку нажатия кнопки 1,2,3 и 4 на одну эту
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 Private Sub ButtonClick(sender As Object, e As EventArgs) Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click
        Dim PressedButton As Button = CType(sender, Button)
        If answers.Contains(Trim(PressedButton.Text)) Then
            PressedButton.BackColor = Color.Green
            Button1.Enabled = False
            Button2.Enabled = False
            Button3.Enabled = False
            Button4.Enabled = False
            Button8.Text = "Вперёд"
        Else
            PressedButton.BackColor = Color.Red
            Button1.Enabled = False
            Button2.Enabled = False
            Button3.Enabled = False
            Button4.Enabled = False
            Button8.Text = "Итоги"
        End If
        Button8.Visible = True
    End Sub
И проверьте, что в answers.txt и 1.txt текст написан одинаково на одной и той же раскладке, я не проверял точно, но есть подозрение, что какой-то символ где-то был написан не в той раскладке, я написал их по новой и все нормально заработало
1
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
09.04.2020, 20:11 34
Лучший ответ Сообщение было отмечено Rav26 как решение

Решение

Накидал тоже пример
Вложения
Тип файла: zip Millionaire.zip (212.2 Кб, 7 просмотров)
2
1976 / 1410 / 365
Регистрация: 26.06.2017
Сообщений: 4,009
09.04.2020, 23:24 35
Orlangur, прям заморочился!
Я запустить не смог, студия и FW старые, но код и ресурсы глянул, прикольно.
1
Лень — мое второе и
3206 / 2397 / 684
Регистрация: 28.11.2014
Сообщений: 3,587
Записей в блоге: 3
10.04.2020, 06:35 36
Uswer, спасибо там в debug лежит .exe, можно запустить
1
1 / 1 / 0
Регистрация: 12.02.2020
Сообщений: 66
10.04.2020, 08:33  [ТС] 37
спасибо ребята огромное выручили, этот проект у меня в роли дипломки, кто учился на программиста наверно помните, что под каждой практикой отчеты и т.д. плюс этот карантин время не доходит до кода. Ещё раз всем спасибо))
0
10.04.2020, 08:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.04.2020, 08:33
Помогаю со студенческими работами здесь

Работа с текстом в многострочном поле ввода
Создайте приложение для работы с текстом в многострочном поле ввода. В зависимости, от того, какая...

Вставка символа в текстовое поле с уже имеющимся текстом
Форумчане! Я "собрал" клавиатуру. Текст который печатается в TextBox. Можно сохранить его, и...

Скрыть/показать поле с текстом если оно заполнено
Привет народ! Как скрыть/показать при обновлении текстовое поле если оно заполнено/не...

Генератор картинки с текстом, который нужно ввести в поле
Как сделать такую же штуку, как тут? Фон там же, шрифт Minecraft.ttf, выбор картинки можно взять...

Как сделать поле Data пригодным для объединением в форме с текстом
Доброго времени суток! Есть таблица, в ней поле с типом данных "Дата/Время". Создаётся отчет, где...

Как числовые данные, введенные в поле edit, вывести в label текстом
Вывести значение и имя наименьшего из четырех введенных чисел a,b,c,d procedure...


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

Или воспользуйтесь поиском по форуму:
37
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru