Возможно тут проблема с сохранением вопросов в массив, хотя счётчик вопросов показывает верную цифру…
Procedure LoadTests;
Begin
//Перенос тестов в типизированный массив в процессе загрузки
AssignFile(FileTests,'MyTests.DBT');
Reset(FileTests);
Cnt:=0; CntMax:=0;
While Not EOF(FileTests) Do
Begin
ReadLn(FileTests,DataTests);
If DataTests[1]='?' Then
Begin
Inc(Cnt); CntMax:=Cnt;
DTests[Cnt].Ques:=Copy(DataTests,2,Length(DataTests));
End;
If DataTests[1]='1' Then
Begin
DTests[Cnt].Answ[1]:=Copy(DataTests,2,Length(DataTests));
End;
If DataTests[1]='2' Then
Begin
DTests[Cnt].Answ[2]:=Copy(DataTests,2,Length(DataTests));
End;
If DataTests[1]='3' Then
Begin
DTests[Cnt].Answ[3]:=Copy(DataTests,2,Length(DataTests));
End;
If DataTests[1]='4' Then
Begin
DTests[Cnt].Answ[4]:=Copy(DataTests,2,Length(DataTests));
End;
If DataTests[1]='$' Then
Begin
DTests[Cnt].TrueAnsw:=StrToInt(Copy(DataTests,2,Length(DataTests)));
End;
End;
CloseFile(FileTests);
End;
11 октября 2009 в 13:00
дополнение (само переключение на следующий вопрос)
procedure TTestingForm.NextQuestionClick(Sender: TObject);
begin
If Cnt<=CntMax Then
Begin
//Inc(Cnt);
Answers.Items.Clear;
Question.Text:=DTests[Cnt].ques;
Answers.Items.Add(DTests[Cnt].answ[1]);
Answers.Items.Add(DTests[Cnt].answ[2]);
Answers.Items.Add(DTests[Cnt].answ[3]);
Answers.Items.Add(DTests[Cnt].answ[4]);
End;
isEndTest:=(Cnt=CntMax);
If isEndTest Then N1.Enabled:=True;
//Если вопрос последний то просто нажать кнопку "Завершение тестирования"
end;
11 октября 2009 в 13:00
дополнение (выбор правильного ответа)
procedure TTestingForm.AnswersClick(Sender: TObject);
begin
If Answers.ItemIndex<>-1 Then
Begin
If Cnt<=CntMax Then
Begin
Answ[Cnt]:=Answers.ItemIndex+1;
End;
Inc(Cnt);
//При выборе ответа собирать ответы либо в массив, либо в файл, чтобы сверить
If (Cnt<>CntMax) Then
Begin
NextQuestion.Enabled:=True;
NextQuestion.Click;
NextQuestion.Enabled:=False;
If Not N1.Enabled Then isEndTest:=False;
End;
If Cnt=CntMax Then
Begin
isEndTest:=True;
N1.Enabled:=True;
End;
End;
end;