Ремонт...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Terarist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 03.02.2003 (Пн) 18:28
Откуда: Russia

Ремонт...

Сообщение Terarist » 04.04.2003 (Пт) 19:12

Есть часть кода тестовой программы, он читает из блокнота вопросы с ответами , запихивает их в форму куда надо, проверяет (вообшем поймёте), так вот: КАК СДЕЛАТЬ ТАК ЧТОБ ОН ДЕЛАЛ ТОЖЕ САМОЕ, НО ТОЛЬКО ОТВЕТ НУЖНО БЫЛО ВПИСЫВАТЬ САМОМУ В ТЕХТ, А ПРОГРАММА СВЕРЯЛА ОТВЕТ НАПИСАННЫЙ И ОТВЕТ В ФАЙЛЕ...Я идиот! Убейте меня, кто-нибудь!


Private Sub LoadQuestion(ByVal QNumber As Long)
'Загрузить вопрос номер QNumber
Dim C As Long, I As Long, Z As String, FN As Integer
Dim Q As String, A As String
Const sQS As String = " -> " 'Строка, разделяющая вопрос и ответы
Const sAS As String = ";" 'Разделитель ответов
Const sRA As String = "(+)" 'Строка, отмечающая правильный ответ
FN = FreeFile
If filename = "" Then
MsgBox "Вы не указали файл"
End
Else
Open filename For Input As #FN 'Открыть файл для чтения
C = 0 'Сбросить счетчик строк
Do Until EOF(FN)
Line Input #FN, Z 'Считать строку
C = C + 1 'Увеличить счетчик на 1
If QNumber = C Then Exit Do 'Если нужная строка - то выход
Z = ""
Loop
Close #FN
If Len(Z) = 0 Then 'Если нужного номера вопроса не найдено
lblQuestion.Caption = "(не доступно)"
lblQuestion.Tag = ""
For I = optAnswers.LBound To optAnswers.UBound
optAnswers(I).Caption = "(не доступно)"
Next I
Exit Sub
End If
End If
Q = Left$(Z, InStr(Z, sQS) - 1) 'Здесь будет текст вопроса
A = Mid$(Z, InStr(Z, sQS) + Len(sQS)) 'А здесь - ответы
lblQuestion.Caption = Q 'Вывести в лейбл вопрос
lblQuestion.Tag = "" 'А здесь потом будет номер правильного ответа
Q = "1234" 'Подготовить последовательность ответов для перемешивания
For I = 1 To 4
Randomize Timer
QNumber = 1 + Fix(Rnd * Len(Q)) 'Выбрать, на какой номер будет записан текущий ответ
Z = Split(A, sAS)(I - 1) 'Выделить строку с текущим ответом
If Left$(Z, Len(sRA)) = sRA Then 'Если строка отмечана, то
Z = Mid$(Z, Len(sRA) + 1) 'Убрать отметку
lblQuestion.Tag = Mid$(Q, QNumber, 1) 'И записать номер правильного ответа
End If
optAnswers(Val(Mid$(Q, QNumber, 1)) - 1).Caption = Z 'Вписать текст ответа
Q = Left$(Q, QNumber - 1) & Mid$(Q, QNumber + 1) 'Удалить использованный номер
Next I
End Sub
Private Sub CheckAnswer()
'Проверка ответа
Dim I, Q As Long
Q = Val(lblQuestion.Tag) 'Номер правильного ответа
For I = 0 To 3
If optAnswers(I).Value Then Exit For 'Найти выделенный опшнбуттон, в I его индекс
Next I

If I + 1 = Q Then 'Если правильно
Counter = Counter + 1 'Увеличить счетчик
shPokazatel(X).FillColor = &HFF00&
lblpokaz1.Caption = "Правельных ответов " & Counter
X = X + 1
Else
nepravelno
End If
End Sub

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 05.04.2003 (Сб) 13:02

Напиши мне на E-mile. "За банку пива" вышлю готовый пример
тестовой программы. Уверен, тебе понравится!

Yurich
aula@ghost.dn.ua

-=alp=-
Продвинутый пользователь
Продвинутый пользователь
Аватара пользователя
 
Сообщения: 147
Зарегистрирован: 08.03.2003 (Сб) 19:20

Сообщение -=alp=- » 05.04.2003 (Сб) 18:40

Единственное что я не понял, что такое Qnumber в строке
If QNumber = C Then Exit Do 'Если нужная строка - то выход

Что задается (как определяеться Qnumber)

И помойму это просто и наверное ты уже сам нашол ответ на свой вопрос
________________________________________
Коллекционер информации.

Terarist
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 154
Зарегистрирован: 03.02.2003 (Пн) 18:28
Откуда: Russia

Сообщение Terarist » 05.04.2003 (Сб) 19:07

Еслиб я знал, то не пудрил бы людям мозги...

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 07.04.2003 (Пн) 10:18

Не надо создавать много тем на один вопрос.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

    TopList