Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
ВнизПроблема с выводом данных Найти похожие ветки
← →
Java73 © (2004-08-16 22:20) [0]Доброе время суток всем.
У меня возник немного странный вопрос, вернее проблема, причину которой я не могу понять.
В программе тестирования есть процедура, читающая вопрос и варианты ответов из базы данных:
TutorMode - включен режим проверки (показывает неправильный ответ, читает тот же вопрос)
DidMist - указывает на допущенную ошибку
QNow - номер текущего вопроса
QCount - общее число вопросов
if (TutorMode)AND(DidMist) then Dec(QNow);
Inc(QNow);
LocateQuestion(QNow); //Считываем вопрос
//Далее выводим вопрос, считываем варианты ответов и выводим их тоже.
//Теперь, если вопрос последний, указываем это, если только не включен режим проверки
if QNow=QCount then
begin
TestEnd:=true;
if (TutorMode) AND (DidMist) then TestEnd:=false;
end;
DidMist:=False;
Эта процедура вызывается из следующего обработчика события OnClick кнопки Следующий вопрос:
if not TestEnd then begin (1)
CheckAnswer; //Проверяем правильность ответа
RefreshQA; //Вызываем вышеуказанную процедуру
end else begin
CheckAnswer;
StartResults; //Переходим на обработку результатов
end;
Работает так: при TutorMode=False вопросы выводятся друг за другом, не зависимо от того, правильно ли ответил тестируемый или нет. Результаты в конце.
При TutorMode=True если ответ неправильный будет выведен тот же вопрос. Работает правильно, пока не дойдет до последнего вопроса. Тогда не зависимо от того, была ли допущена ошибка или нет, сразу идет переход на обработку результатов, хотя при ошибке должен был бы снова выводиться последний вопрос. Этого не происходит. При пошаговом выполнении все переменные принимают необходимые значения, однако потом почему то все равно идет переход.
Объясните мне, может я что то напутал, или где то ошибся. Я просто уже туплю. Все работает правильно, но на последнем вопросе эта фигня.
Возможно ли, что, дело в Application.ProcessMessages, которую использую для паузы, чтобы вывести окно "Неправильно".
Тупая ситуация возникает из за следующего:
Пользователь нажимает кнопку След.вопрос. Допустим указатель QNow указывает на предпоследний. TestEnd естественно равно FAlse. Условие (1) выполняется, вызывается RefreshQA. Увеличивается номер вопроса (то есть указывает теперь на последний). Он выводится, пользователь выбирает ответ. Допустим он выбирает неправильный ответ, тогда в процедуре TestEnd устанавливается в False, т.е. в обработчике OnClick все равно будет выполняться условие (1) пока пользователь не выберет правильный ответ. НО, когда пользователь выбирает неправильный, сразу идет переход на StartResults! Что за бред? В любом случает переход долен быть только когда пользователь нажмет кнопку опять (т.е. не выполнится условие (1).
Заранее благодарен.
← →
Java73 © (2004-08-17 02:05) [1]Признаю свои ошибки!!!!!!! Не бейте!!!!! Я забыл, что сначала выполняется проверка условия, а только потом устанавливается DidMist в True. ПРавильно вот так:
CheckAnswer;
if TutorMode AND DidMist then TestEnd:=false; (1)
if not TestEnd then begin
RefreshQA;
end else begin
StartResults;
end;
Ну ничего. Посидел 30 минут, покопался. Вот я дурак! Ведь в пошаговом режиме выполнял не обращал внимания! ИСкал что-то серьезное, а тут такая чушь.......
Извините, если кого-то напрасно побеспокоил.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.022 c