![]() |
|
|
#16
|
||||
|
||||
|
А что не получается? И какая у вас Delphi?
|
|
#17
|
|||
|
|||
|
СПАСИБО!!!!!!! все получилось!!!!!
|
|
#18
|
|||
|
|||
|
Всем привет!
Требуется небольшая помощь. Делаю обучающую программу с возможностью тестирования. В архиве исходники. В unit4,6,7 содержится код трех тем.Мне необходимо сделать так, чтобы в процессе прохождения теста до его окончания(можно задать время проведения теста в редакторе теста (Unit2)), если уже набрано больше неправильных ответов чем указано в редакторе теста(В редакторе теста указывается общее число вопрос и количество правильных ответов которое нужно дать чтобы получить соответствующую оценку!!!), то тест останавливался бы и выводилась оценка(чтобы не ждать окончания теста).Никак не могу сообразить((( |
|
#19
|
||||
|
||||
|
У вас должен быть на форме компонент TTimer у котрого три задачи:
1. Вывод общегое времени затраченного на тест. 2. Вывод оставшегося времени на текущий вопрос. (Необязательная вещь) 3. Слежение за количеством верных/неверных ответов. Вот п.3 у вас и будет принимать решение о прерывании/продолжении теста. Но вообще прерывать серию тестов на пол-пути - неверное решение, т.к. дает испытуемому возможность быстро вычислить методом тыка, верный ответ. Необходимо всю серию тестов доводить до финала, и только после этого выдавать оценку. |
|
#20
|
|||
|
|||
|
Всем привет!
Требуется небольшая помощь. Делаю обучающую программу с возможностью тестирования. В архиве исходники. В unit4,6,7 содержится код трех тем.Мне необходимо сделать так, чтобы в процессе прохождения теста до его окончания(можно задать время проведения теста в редакторе теста (Unit2)), если уже набрано больше неправильных ответов чем указано в редакторе теста(В редакторе теста указывается общее число вопрос и количество правильных ответов которое нужно дать чтобы получить соответствующую оценку!!!), то тест останавливался бы и выводилась оценка(чтобы не ждать окончания теста).Никак не могу сообразить(((Programm.rar |
|
#21
|
|||
|
|||
|
А как это методом тыка испытуемый узнает?)Там не выводится правильный/неправильный в процессе теста
Timer стоит. В интарвале установленном в настройках движется ProgressBar и допустим на "3" нам надо дать 6 правильных ответов из 10. Тогда если мы бы дали 5 неправильных то таймер бы остановился и вывелась бы оценка. Вот не пойму куда условие вставить чтобы так было if kol-vern>=Form2.SpinEdit1.Value - Form2.SpinEdit5.Value then выводим оценку и останавливаем тест Последний раз редактировалось bleeep, 28.06.2009 в 17:11. |
|
#22
|
||||
|
||||
|
В общем как я понял у вас так:
1. Заверешение серии тестов по времени или по достижении последнего вопроса. 2. Заверешение теста по времени или по переходу к следующему вопросу. Тогда наверное где-то так: В начале серии тестов инициализируете переменную: Код:
StartTestSeriaTime := GetTickCount; Код:
StartTestTime := GetTickCount; Код:
CurrentTime := GetTickCount;
if CurrentTime - StartTestSeriaTime > MaxTestSeriaTime
then ShowMessage('Отведенное время на серию тестов истекло');
if CurrentTime - StartTestTime > MaxTestTime
then ShowMessage('Отведенное время на тест истекло'); |
|
#23
|
|||
|
|||
|
Мне необходимо добавить завершение теста когда он уже выполнен на 2 до окончания всего теста
Время на отдельный вопрос не задается, только на весь тест. Последний раз редактировалось bleeep, 28.06.2009 в 18:13. |
|
#24
|
|||
|
|||
|
Уже сам разобрался
Всего то новую переменную добавить надо было.Появился другой вопрос: Имеется PageControl на котором есть три TabSheet'а на каждом TabSheet'е имеются SpinEdit'ы. Допустим я меняю значение одного SpeenEdit'а перехожу на следующий TabSheet затем возвращаюсь и измененное значение SpinEdit'а осталося старым(каким было до изменения).Как сделать чтобы не изменялось? |
|
#25
|
||||
|
||||
|
Если я правильно понял, то на SpinEdit1 вы накрутили 10, затем перешли на вторую вкладку и накрутили на SpinEdit2 12, затем возвращаетесь к SpinEdit1 а у вас вместо 10 снова 0. Если это так, то это ненормальное поведение контролов и скорее всего вы сами в этом виноваты, т.к. где-то при смене вкладки прописали обнулять значение SpinEditов.
|
|
#26
|
|||
|
|||
|
Ничего не прописывал...Хотя есть одна вещь настройки берутся из файла *.ini в нем прописаны так сказать заданные SpinEdit'ом значения а при загрузке программы она берет значения из файла если таковой присутствует в директории...Может с этим связано?
Во точно..Удалил файлы из директории и это исчезло.То есть при старте у меня прога проверяет наличие файлов, если есть то значения в SpinEdit'ах не изменяются как я привел пример выше. Если же файлы отсутствуют то все норм, мне необходимо сделать чтобы так было и с присутствием файлов Код:
procedure TForm2.FormShow(Sender: TObject);
begin
GetDir(0,sPath);
if FileExists(sPath + '\Cfg.INI') then
begin
Label7.Caption:='файл конфигурации создан';
SpinEdit1.Value:=strtoint(Form4.ReadIni('all','kolv'));
SpinEdit2.Value:=strtoint(Form4.ReadIni('all','kolm'));
SpinEdit3.Value:=strtoint(Form4.ReadIni('all','5'));
SpinEdit4.Value:=strtoint(Form4.ReadIni('all','4'));
SpinEdit5.Value:=strtoint(Form4.ReadIni('all','3'));
end
else Label7.Caption:='файл конфигурации не создан';
end;...Ура работает))Спасибо что подтолкнули в правильном направлении ![]() Последний раз редактировалось bleeep, 29.06.2009 в 20:16. |
|
#27
|
||||
|
||||
|
Значит мое предположение, о ваших шаловливых ручках подтвердилось.
![]() А как у вас загоняются данные из ини-файлов в контролы? Наверняка это происходит не только при занрузке, но и в процессе работы программы. А вы случаем не пользуетесь сторонним компонентом для этих целей? Предположу, что это именно так и надо просто этот компонент активировать при старте/выходе из программы, а все остальное время он должен быть выключенным. |
|
#28
|
|||
|
|||
|
Данные загоняются не из ини а в ини .То есть задаю значения СпинЭдита потом по нажатию на кнопку эти значения записываются в ини файл, из которого уже потом берутся значения количества времени и критериев...Вот такой принцип
![]() |