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

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

В первой части нашего урока мы научились создавать файл тестов. Теперь было бы очень логично научиться нам его получать, то есть получать каждый вопрос теста. Тут все просто, так как в каждой строке файла у нас хранится полностью информация о вопросе, то я объясню смысл получения этой информации (получение всех вопросов). Смысл всем в этом — то что мы первоначально считываем первую компоненту файла и считываем информацию о первом вопросе. И сразу получаем количество ответов для первого вопроса. Затем организовываем цикл от 1 до количество этих ответов для первого вопроса и считываем построчно каждую компоненту в этом файле, постепенно увеличивая переменную count и устанавливая указатель на компоненту под номером count. В итоге, допустим для первого вопроса у нас будет 3 ответа, когда мы считаем count у нас будет равняться 4, следовательно при следующем нажатии на кнопку «Далее» мы получим инфу о втором вопросе и так далее. В итоге мы пройдем все вопросы и не пропустим ни одного.


Я тут набросал небольшой проект, вот что у меня тут вышло

Я его выложу, но чуть-чуть попозже, а сейчас на кнопку выгрузки вопросов пишем следующий код (событие — OnClick)

procedure TForm1.Button5Click(Sender: TObject);
var
i,j:integer;
begin
try
if OpenDialog1.Execute then
begin
k:=1;
CheckListBox1.Clear;
AssignFile(F,OpenDialog1.FileName);
Reset(F);
Seek(F,count);
if Eof(F)=True then
begin
Edit1.Clear;
CheckListBox1.Clear;
ShowMessage('All test loaded');
CloseFile(F);
exit;
end;
Read(F,Test);
j:=Test.count_otv;
for i:=0 to j-1 do
begin
Seek(F,count);
if Eof(F)=True then
begin
Edit1.Clear;
CheckListBox1.Clear;
ShowMessage('All test loaded');
CLoseFile(F);
exit;
end;
Read(F,Test);
arr_pr_ot[k]:=Test.pr_ot;
inc(k);
CheckListBox1.Items.Add(Test.otv);
Edit1.Text:=Test.Name_v;
inc(count);
end;
end;
except
on e:Exception do
CloseFile(F);
end;
end;

Как видите, все, что я говорил выше, я все реализовал это дело программно, только конечно учел указатель конца файла и многое другое. С помощью Seek мы и ставим указатель на нужное нам место, а дальше просто считываем данную компоненту в структуру нашу, которая была описана в первой статье и добавляем данные в TCheckListBox и TEdit

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

Когда будете запускать проект, при инициализации создается файл test.dat, соответственно когда будете записывать данные в файл, то они будут записывать в этот файл, если Вы запустите программу еще раз, то данные стеруться из этого файла, так что или переносите его куда-нибудь, либо в коде измените

Facebook Vk Ok LinkedIn Telegram

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

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