Создание тестов на Delphi. Часть 6

3 минуты на чтение

Итак, в последней части про создание тестов на 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;

Все, что писал выше все тут и есть, то есть устанавливаю указатель в файле на ту компоненту, на которой стоит указатель минус количество ответов для данного вопроса и тогда у нас все будет нормально получаться при редактировании. Исходники прилаживаю полного проекта, в следующих статьях рассмотрим как можно удалять данные теста.

Исходники статьи качаем тут

Facebook Vk Ok Twitter LinkedIn Telegram

Похожие записи:

Итак в последней — четвертой части, посвященной разработки тестов с помощью типизированных файлов в среде разработки Delphi, узнали как можно использовать в своих тестах различные форматы файлов. А вообще, чтобы вспомнить все части, что мы прошли по созданию т...
Итак в части 1 мы поговорили о возможности создание теста в файл, в части 2 мы поговори, как эти тесты из типизированного файла достать, а вот уже в части 3 мы поговорили как можно определить правильные ли выбрал пользователь ответы. В четвертой части по созда...
Итак продолжу серию статей по созданию тестов на Delphi с помощью файлов. В первой части мы узнали как можно записать наш тест в типизированный файл, напомню, что запись происходит по определенной структуре, то есть «записи«, которую мы описали и Вы сможете ув...