Итак, в последней части про создание тестов на Delphi, с помощью типизированных файлах, я рассказал как подготовить наш тест для редактирования, то есть открыть этот тест и вывести все результаты с отмеченными правильными ответами. Сейчас расскажу как я реализовал. Тут все просто, я запоминаю при считывании одного вопроса на какой позиции (указатель) у нас стоит в файле, затем я получаю количество ответов для этого вопроса, а раз мы знаем количество ответов и на какой позиции (компоненте) стоит указатель в файле, то спокойно можем заменить старую информацию на новую, обычной запись данных в типизированный файл. То есть я считал например первый вопрос, у нас в нем например 2 ответа в итоге указатель будет на 2, а количество ответов тоже 2, значит когда я записываю исправленные варианты ответа я устанавливаю указатель в файле на позицию равную:
- на какой позиции сейчас стоит указатель минус количество ответов для этого вопроса в итоге мы не ошибемся и заменим информацию с нужной нам позиции.
Ну что я добавил нового это
- TForm
- TButton
Я добавил новую форму, в которой по нажатию двойным щелчком по TChecklistBox в данной форме, а точнее на ней установлен TEdit будет отображаться выбранный ответ, который в дальнейшем может быть отредактирован. На кнопку TButton на новой форме я написал код, который будет редактирование данные в самом TCheckListBox
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.CheckListBox1.Items[Form1.CheckListBox1.ItemIndex]:=Edit1.Text;
Form2.Close;
end;
Далее я на главной форме установил также еще один TButton, который будет уже отвечать за непосредственное редактирование данных в файле, код выглядит следующим обрзом
procedure TForm1.Button9Click(Sender: TObject);
var
i,seeks,otvc:integer;
begin
seeks:=cc;
AssignFile(F,OpenDialog1.FileName);
Reset(F);
Test.Name_v:=Edit1.Text;
Test.count_otv:=CheckListBox1.Items.Count;
otvc:=Test.count_otv;
for i:=0 to edit_index-1 do
begin
if CheckListBox1.Checked[i]=True then
Test.pr_ot:=IntToStr(i)
else
Test.pr_ot:='';
Test.otv:=CheckListBox1.Items[i];
Test.count_v:=3;
Seek(F,seeks-edit_index);
Write(F,Test);
inc(seeks);
end;
CloseFile(F);
end;
Все, что писал выше все тут и есть, то есть устанавливаю указатель в файле на ту компоненту, на которой стоит указатель минус количество ответов для данного вопроса и тогда у нас все будет нормально получаться при редактировании. Исходники прилаживаю полного проекта, в следующих статьях рассмотрим как можно удалять данные теста.
А Вы в курсе вообще, что такое электричество, как оно производится? Вообще, чтобы получить профессию, связанную с электрическим производством, многого знать не нужно, необходимо просто немного знаний в данной сфере. Зато, после этого, Вы будете знать как работает Электричество в городах и селах, что необходимо сделать, чтобы избежать пропадания электричества. |
Исходники статьи качаем тут
Автор статьи - Andrey53
Метки: создание тестов, тесты, тесты на Delphi
Подскажите плиз в делфи как и можно ли вообще создать тест с расширением файла .tst?
можно, просто создаете файл со своим расширением и записываете туда нужную структуру
AssignFile(F,’test.tst’);
Rewrite(F);
Будете ли Вы публиковать еще уроки по тестам?
Хотелось бы очень, чтобы Вы рассказали как сделать онлайн тесты.
То есть написание сервера и клиента для теста.
В принципе можно попробывать, но тут все просто, использовать просто надо какую-нибудь серверную БД, например MySQL
А как сделать количество правильных ответов;
создайте какую-нибудь переменную для подсчета, и сделайте проверку, если это правильный ответ, то inc(count), если нет, то ничего не делаем, а вконце выводим эту самую переменную, это и будет количество
А как сделать итоги теста и сделайте пожалуйста исходник со созданием изображения.
хотелось бы подробнее узнать о написании тестов по-шагово, для начинающих
тут все подробно описано
это у Вас только для создания тестов, а как можно сделать программу, которая будет тестировать ученика или студента?
Примерно точно также, можно на файлах или БД, использовать тоже можно TChecklIstbox
это у Вас только для создания самих тестов, а как можно создать программу, которая будет непосредственно тестировать, подскажите пожалуйста
Примерно точно также, можно на файлах или БД, использовать тоже можно TChecklIstbox
А как это сделать с помощью БД?
Делать таблицу с вопросами-ответами и грузить с нее впрограмму!