singlepost

Программа не переключается на следующий вопрос << На главную или назад  

Возможно тут проблема с сохранением вопросов в массив, хотя счётчик вопросов показывает верную цифру…

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;

67 ответов в теме “Программа не переключается на следующий вопрос”

  1. 2
    Sergey Ibragimov ответил:

    дополнение (само переключение на следующий вопрос)

    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;

  2. 1
    Sergey Ibragimov ответил:

    дополнение (выбор правильного ответа)

    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;

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.