Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.12.2009, 18:54   #1
Maestro-
Новичок
Джуниор
 
Регистрация: 13.12.2009
Сообщений: 4
По умолчанию Кнопка "Назад" в тесте

Здравствуйте, нужна помощь в создании теста. Вернее сам тест почти готов, но нужно реализовать кнопку "Назад". Программа считывает сам тест из .txt файла. Заполнение текстом выглядит так:
Код:
AssignFile(F, 'test4.txt');
 Reset(F);
 while not Eof(F) do
 begin           i:=i+1;
 Readln(F, S);
 a[i]:=(S);
 end;
 CloseFile(F);
 label2.Caption:=a[j]; j:=j+1;
  button1.Caption:=a[j]; j:=j+1;
   button2.Caption:=a[j]; j:=j+1;
    button3.Caption:=a[j]; j:=j+1;
     button4.Caption:=a[j]; j:=j+2;
А при нажатии на вариант один (Button1) проверяется правильность.
Код:
procedure TForm2.Button1Click(Sender: TObject);
begin
o:=1;     t:=t+6;     sc:=sc+1;
 label2.Caption:=a[j]; j:=j+1;
  button1.Caption:=a[j]; j:=j+1;
   button2.Caption:=a[j]; j:=j+1;
    button3.Caption:=a[j]; j:=j+1;
     button4.Caption:=a[j]; j:=j+2;
     begin
if o=strtofloat(a[t]) then z:=z+1 else z:=z+0;  end;
o - ответ №1, т.е. вариант А. Если он равен элементу массива a[t] (в текстовом документе - каждая 6-я строка - число, равное правильному ответу), t - строка с правильным вариантом, sc - номер вопроса, z - количество правильных ответов.

Не получается сделать кнопку "Назад", при нажатии на которую тест возвращается на один вопрос назад.

З.Ы.: Не стал выкладывать полный код программы, т.к. он написан очень криво, так что нормальный человек быстро запутается.
Maestro- вне форума Ответить с цитированием
Старый 13.12.2009, 19:30   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Если я правильно понял, то
sc:=sc-2;
mihali4 вне форума Ответить с цитированием
Старый 13.12.2009, 19:39   #3
Maestro-
Новичок
Джуниор
 
Регистрация: 13.12.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Если я правильно понял, то
sc:=sc-2;
Нет, это я неправильно выразился. Переменная sc считает только количество вопросов, чтобы "знать", когда завершить тестирование. Т.е. если в тесте 25 вопросов, то будет
Код:
if sc=25 then showmessage('Тест закончен');
Maestro- вне форума Ответить с цитированием
Старый 13.12.2009, 19:48   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

И что?
У вас Button1Click - это переход к следующему вопросу, так?
Вы зачем-то сразу делаете sc:=sc+1, хотя резоннее делать это при нажатии на кнопку ответа.
Поэтому и sc:=sc-2;
Судя по всему, нужно еще добавить j:=j-12;
mihali4 вне форума Ответить с цитированием
Старый 13.12.2009, 20:18   #5
Maestro-
Новичок
Джуниор
 
Регистрация: 13.12.2009
Сообщений: 4
По умолчанию

Button1Click - кнопка ответа с одновременным переходом к следующему вопросу.
Принцип таков: форма, на ней дан вопрос №1 и 4 кнопки, Caption которых равен варианту ответа. При нажатии на одну из кнопок происходит переход к следующему вопросу, приписывание +1 к пройденным вопросам и проверка на правильность выбранного варианта ответа (если правильно - z:=z+1, неправильно - z:=z+0).
А кнопка "Назад" должна вернуть нас на 1 вопрос назад (sc:=sc-1), поменять все Caption на предыдущие и проверить, если пользователь ответил правильно на этот вопрос - сделать z:=z-1, а если нет - z:=z+0;
Maestro- вне форума Ответить с цитированием
Старый 13.12.2009, 20:47   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну вот вы сами алгоритм и описали...
И в чем вопрос?
mihali4 вне форума Ответить с цитированием
Старый 13.12.2009, 20:52   #7
rockedit
Форумчанин
 
Аватар для rockedit
 
Регистрация: 18.03.2009
Сообщений: 109
По умолчанию

А зачем такая сложность с кнопками? компонент TRadioGroup не слыхали? рациональней всего сделать так:
Массив, в нем храните номер ответа выбраного пользователем,
в переменной какой нить хранить текуший шаг(текуший вопрос)
три конопки, вперед, назад и ответить. при помоши case отслеживаете какой шаг и что нужно вывести в caption компонента radioButton и еще отслеживаете не пришли ли вы к первому вопросы, чтоб сделать кнопку назад неактивной Enabe = false. как пришли к последенему вопросу делайте неактивной кнопку вперед. по нажатию на кнопку ответ делаете сравнение ответов массива с правильными. вот и вся математика, делаеться за час элементарно
C уважением Rockedit!
Мозг человека обычно загружен лишь на 10% своей мощности; остальное резерв для опереционной системы. Если помог не пожалей "+", это лучшее спасибо
rockedit вне форума Ответить с цитированием
Старый 14.12.2009, 11:52   #8
Maestro-
Новичок
Джуниор
 
Регистрация: 13.12.2009
Сообщений: 4
По умолчанию

Цитата:
Ну вот вы сами алгоритм и описали...
И в чем вопрос?
Не получается реализовать.

Цитата:
А зачем такая сложность с кнопками? компонент TRadioGroup не слыхали? рациональней всего сделать так:
Массив, в нем храните номер ответа выбраного пользователем,
в переменной какой нить хранить текуший шаг(текуший вопрос)
три конопки, вперед, назад и ответить. при помоши case отслеживаете какой шаг и что нужно вывести в caption компонента radioButton и еще отслеживаете не пришли ли вы к первому вопросы, чтоб сделать кнопку назад неактивной Enabe = false. как пришли к последенему вопросу делайте неактивной кнопку вперед. по нажатию на кнопку ответ делаете сравнение ответов массива с правильными. вот и вся математика, делаеться за час элементарно
C уважением Rockedit!
Эту сложность с кнопками делал другой человек, моя задача дополнить имеющуюся программу. Возможно переделаю её как вы посоветовали.

Спасибо mihali4 и Rockedit.
Maestro- вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Динамическая память или кнопка "Отмена" и "Назад" Ilnour1986 Microsoft Office Excel 2 27.10.2009 04:49
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Считывание строк из файла. перемещение по строкам "веред"-"назад" Larkin. Помощь студентам 2 15.06.2009 17:58
Кнопка "поверх всех окон" как в палитре инструментов AvAlex Общие вопросы Delphi 11 16.04.2009 01:04
MsgBox кнопка "Отмена" Siver Microsoft Office Excel 4 23.12.2008 20:10