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

  • создание тестов (создание файлов, добавления сколь угодно ответов)
  • открытие тестов (то есть их прохождение)
  • определение правильности выбора вариантов ответа
  • использование файлов в своих тестах разных расширений

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

На форме у меня все тоже, единственное, что я добавил еще 2 кнопки

  • TButton — 2 шт

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

procedure TForm1.Button8Click(Sender: TObject);
var
 count_o,i,l:integer;
 pr_otvet:WideString;
begin
   try
    if OpenDialog1.Execute then
     begin
      k:=0;
      AssignFile(F,OpenDialog1.FileName);
      Reset(F);
      Seek(F,cc);
      if EOF(F)=True then
       exit;
      Read(F,Test);
      count_o:=Test.count_otv;
      pr_otvet:=Test.pr_ot;
      for i:=0 to count_o-1 do
       begin
        seek(F,cc);
        Read(F,Test);
        Edit1.Text:=Test.Name_v;
        CheckListBox1.Items.Add(Test.otv);
        if Test.pr_ot<>'' then
         CheckListBox1.Checked[StrToInt(Test.pr_ot)]:=True;
        inc(cc);
       end;
      CloseFile(F);
     end;
   except
    on e:Exception do
   end;
end;

Как видите мы открываем здесь первый вопрос и к нему все ответы, если данный ответ правильный (а правильным у нас считается тот, в котором мы в поле pr_ot записывали номер правильного ответа) и если этот номер существует, то ставим галочку в ответах на данный номер. На событие OnClick кнопки далее для редактирования я написал следующий код

procedure TForm1.Button7Click(Sender: TObject);
var
 counts,i:integer;
begin
   Try
    CheckListBox1.Items.Clear;
    AssignFile(F,OpenDialog1.FileName);
    Reset(F);
    Seek(F,cc);
    if EOF(F)=True then
     exit;
    Read(F,Test);
    counts:=Test.count_otv;
    for i:=0 to counts-1 do
     begin
      Seek(F,cc);
      if EOF(F)=True then
       exit;
      Read(F,Test);
      Edit1.Text:=Test.Name_v;
      CheckListBox1.Items.Add(Test.otv);
      if Test.pr_ot<>'' then
       CheckListBox1.Checked[StrToInt(Test.pr_ot)]:=True;
      inc(cc);
     end;
    //CloseFile(F);
   except
    on e:Exception do
   end;
end;

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

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

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

Автор статьи - Andrey53

Метки: , ,




К записи “Создание тестов на Delphi. Часть 5” оставлено комментариев: 4.

  1. Mr.Nothing:

    Кошмар) Смотрю на это оформление кода, на названия переменных — просто кошмар) Сколько тебе лет, если не секрет?

    Хотя всё это надо пройти. Обязательно сохрани все свои статьи и исходники где-то в надажном месте. Лет через 5, если не забросишь Delphi и наберешься опыта, будет очень забавно смотреть на свои старые поделки, которыми ты наверняка сейчас так гордишься :)

    Упрекать и давать советов не буду, со временем ты сам всё поймешь. Удачи!

  2. Andrey53:

    Mr.Nothing каждый с чего-то начинает

  3. Аноним:

    Mr.Nothing
    Если ты сам такой мега пупер умный, то написал бы что не так с названием его переменных, у тебя поди просто в одном месте чешится — надо упрекнуть кого-то в чем-то.

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

  4. Vlad:

    Комментарий специально для Mr.Nothing, который засветился здесь три года назад.

    Дружище, то что ты наплёл про оформление и название переменных — это тупой бред получившего образование программиста.

    Цой говорил, что люди делятся на две категории: одни сидят на трубах, а другим нужны деньги.

    А я скажу про программистов: 99% получивших образование программистов считают себя крутыми именно потому, что могут стандартифицированно оформлять код.

    Спорить не буду. Такая работа нам нужна. Это создание мега приложений вроде 3D MAx большой командной. Однако, дружок. Такие программисты НИКОГДА не работают самостоятельно и ничего не создают сами. Таким программистам нужен Хозяин, который платит зарплату. Ещё такие программисты любят порассуждать на тему, как это круто писать на C++ или там на Асме.

    А ведущий этого блога, один из единиц, что пишут в рамках обучения программированию что-то путнее.

    Mr.Nothing, дружок, давно прошло то время, когда можно было соблазнить человека к программированию идиотским исходником «Hello World».

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

    :D

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

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

*