Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.46 MB
Время: 0.031 c
11-1080485261
nester
2004-03-28 18:47
2004.09.12
Ктонибудь пользовался KOLHTTP?


14-1093090844
able
2004-08-21 16:20
2004.09.12
Предложение.


3-1092632990
Mamed
2004-08-16 09:09
2004.09.12
Bag v AdODB i WebBrowser


4-1091091114
Alek
2004-07-29 12:51
2004.09.12
Как получить десркиптор текущего активного окна?


3-1092387386
DmitryMN
2004-08-13 12:56
2004.09.12
Аналог IsNull а Firebird?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский