В первой части нашего урока мы научились создавать файл тестов. Теперь было бы очень логично научиться нам его получать, то есть получать каждый вопрос теста. Тут все просто, так как в каждой строке файла у нас хранится полностью информация о вопросе, то я объясню смысл получения этой информации (получение всех вопросов). Смысл всем в этом — то что мы первоначально считываем первую компоненту файла и считываем информацию о первом вопросе. И сразу получаем количество ответов для первого вопроса. Затем организовываем цикл от 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, соответственно когда будете записывать данные в файл, то они будут записывать в этот файл, если Вы запустите программу еще раз, то данные стеруться из этого файла, так что или переносите его куда-нибудь, либо в коде измените

Хочу заметить, что сейчас очень сложно найти квартиру на один-два дня. А, если Вы приезжий в Москве и Вам негде переночевать остается несколько вариантов, гостиница, что достаточно дорого или арендовать квартиру. Да, кстати, аренда квартир посуточно в москве поможет Вам найти самую лучшую квартиру, удовлетворяющую Вашим условиям, а самое главное, что в любое время дня.
Автор статьи - Andrey53

Метки: , ,




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

  1. Аноним:

    полная поебень

  2. Аноним:

    Прога твоя не работает

  3. ЫЫЫ:

    Of course, this is fake!

  4. […] 1 мы поговорили о возможности создание теста в файл, в части 2 мы поговори, как эти тесты из типизированного файла […]

  5. […] сможете увидеть в первой части нашей статьи. Далее во второй части мы узнали как можно считать все вопросы из […]

  6. Viki:

    Здравствуйте. Скажите пожалуйста, а как сделать переход к предыдущему вопросу теста?

  7. Санёк:

    Не работает и Автор по ходу забил на все и вся. Что по статье смотришь и экспериментируешь — болт в результате, что исходник корявый. Дальше статьи читать неинтересно, начнёшь практиковать, зря время потеряешь. Жаль, тема то интересная сама по себе….

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

Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

*