Итак, в последней части про создание тестов на 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. Часть 6” оставлено комментариев: 15.

  1. привет:

    Подскажите плиз в делфи как и можно ли вообще создать тест с расширением файла .tst?

    • Andrey53:

      можно, просто создаете файл со своим расширением и записываете туда нужную структуру
      AssignFile(F,’test.tst’);
      Rewrite(F);

  2. Школьник:

    Будете ли Вы публиковать еще уроки по тестам?
    Хотелось бы очень, чтобы Вы рассказали как сделать онлайн тесты.
    То есть написание сервера и клиента для теста.

    • Andrey53:

      В принципе можно попробывать, но тут все просто, использовать просто надо какую-нибудь серверную БД, например MySQL

      • Alex.m_95:

        А как сделать количество правильных ответов;

        • Andrey:

          создайте какую-нибудь переменную для подсчета, и сделайте проверку, если это правильный ответ, то inc(count), если нет, то ничего не делаем, а вконце выводим эту самую переменную, это и будет количество

  3. Alex.m_95:

    А как сделать итоги теста и сделайте пожалуйста исходник со созданием изображения.

  4. greff:

    хотелось бы подробнее узнать о написании тестов по-шагово, для начинающих

  5. Аноним:

    это у Вас только для создания тестов, а как можно сделать программу, которая будет тестировать ученика или студента?

  6. Mika:

    это у Вас только для создания самих тестов, а как можно создать программу, которая будет непосредственно тестировать, подскажите пожалуйста

Оставить комментарий

Вы можете использовать следующие теги:

*