Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.06.2010, 20:20
Аватар для nickname
nickname nickname вне форума
Прохожий
 
Регистрация: 19.05.2010
Сообщения: 30
Репутация: 10
Плохо тестовая программа

помогите пожалуйста доделать код тестовой программы
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ComCtrls;
 
const
  kol_vop=10;
 
type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    GroupBox1: TGroupBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    Edit1: TEdit;
    Edit2: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  verno:boolean;
  Questions:array [1..kol_vop] of string;
  right,wrong:integer;
  endl:byte;
  i:integer;
 
implementation
 
{$R *.dfm}
 
procedure TForm1.FormCreate(Sender: TObject);
begin
i:=1;
right:=0;
wrong:=0;
//Здесь сам заполняешь вопросы которые тебе нужны и соответственно напиши там варианты ответов А, B, C и D
Questions[1]:='Для чего нужен Делфи?';
Questions[2]:='Структура делфи -';
Questions[3]:='';
Questions[4]:='';
Questions[5]:='';
Questions[6]:='';
Questions[7]:='';
Questions[8]:='';
Questions[9]:='';
Questions[10]:='';
Memo1.Text:=Questions[1];
end;
 
procedure TForm1.Button1Click(Sender: TObject);
Var j:integer;
begin
If i=kol_vop+1 then
begin
showmessage('Тест окончен');
exit;
end;
//первый вопрос
If i=1 then
//здесь вписывай нужный тебе радиобаттон, который отвечает за правильный вариант вопроса
If RadioButton1.Checked=true then begin // как написать варианты ответов для радиобаттонов
//в этом случае, чтобы обновлялись со следующим вопросом ????? помогите дописать пожалуйста
inc(right);
inc(wrong);
end;
//второй вопрос
If i=2 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=3 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=4 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=5 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=6 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=7 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=8 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=9 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
If i=10 then
If RadioButton2.Checked=true then begin
inc(right);
inc(wrong);
end;
Edit1.Text:='Правильных ответов '+inttostr(right);
Edit2.Text:='Не правильных ответов '+inttostr(wrong);
inc(i);
If i=kol_vop+1 then
exit;
Memo1.Text:=Questions[i];
 
end;
end.
Ответить с цитированием
  #2  
Старый 18.06.2010, 22:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Маньяк!!!
Для тестовой программы тебе надо:
1. Memo - выводить вопрос
2. TRadioGroup - для вывода ответов и выпора пользователя.
3. Массив данных вида "Вопрос, Ответ1..ОтветN, Номер правильного ответа".
4. Цикл по вопросам с подсчетом кол-ва правильных ответов.

Пусть у нас всегда будет 4 варианта ответов, один из которых правильный (простейший вариант):
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
type
  TQuestion = record
    Text : String;
    Answers : Array [0..3] Of String;
    RightAnswer : Integer; // 0.. 3
  end;
   
const
  Q : Array [1..10] Of TQuestion =
       ((Text: 'Текст вопроса 1', Answers:('Ответ1','Ответ2','Ответ3','Ответ4'),0), // первый вопрос. и так всего 10 вопросов
        ...);
   
procedure TForm1.btStartClick(Sender : TObject);
begin
  AQuestion := 0;
  QRights := 0;
  btNextClick(Self);
end;
 
procedure TForm1.btNextClick(Sender : TObject);
var
  I : Integer;
begin
  // Если > 0 то забираем ответ.
  If AQuestion > 0 Then
    If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights);
 
  // Если > 10, то тест заеончен - выводим результат
  Inc(AQuestion);
  If AQuestion > 10 Then
    Begin
      Memo1.Lines.Text := '';
      RasioGroup1.Items.Clear;
      ShowMessage('Тест окончен. Правильных ответов ' + IntToStr(QRights));
      Exit;
    End;
 
  // Выводим след. вопрос
  Memo1.Lines.Text := Q[AQuestion].Text;
  For I := 0 To 3 Do
    RadioGroup1.Items[i] := Q[AQuestion].Answers[i];
  RadioGroup1.ItemIndex := -1;
end;
Ответить с цитированием
  #3  
Старый 18.06.2010, 22:41
Аватар для nickname
nickname nickname вне форума
Прохожий
 
Регистрация: 19.05.2010
Сообщения: 30
Репутация: 10
По умолчанию

да по размеру то же самое получается ! почти, что то я непойму вашего кода , новичёк в делфи не судите строго

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
type
  TQuestion = record   //что это означает?
    Text : String;
    Answers : Array [0..3] Of String;
    RightAnswer : Integer; // 0.. 3
  end;
   
const
  Q : Array [1..10] Of TQuestion =
       ((Text: 'Текст вопроса 1', Answers:('Ответ1','Ответ2','Ответ3','Ответ4'),0), // первый вопрос. и так всего 10 вопросов
        ...);
   
procedure TForm1.btStartClick(Sender : TObject);
begin
  AQuestion := 0;
  QRights := 0; // что это означает?
  btNextClick(Self); // это следующий вопрос??
end;
 
procedure TForm1.btNextClick(Sender : TObject);
var
  I : Integer;
begin
  // Если > 0 то забираем ответ.
  If AQuestion > 0 Then
    If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights); // обяъсните здесь как
 
  // Если > 10, то тест заеончен - выводим результат
  Inc(AQuestion);
  If AQuestion > 10 Then
    Begin
      Memo1.Lines.Text := ''//здесь как бы лог ведётся ??
      RasioGroup1.Items.Clear;
      ShowMessage('Тест окончен. Правильных ответов ' + IntToStr(QRights));
      Exit;
    End;
 
  // Выводим след. вопрос
  Memo1.Lines.Text := Q[AQuestion].Text;
  For I := 0 To 3 Do
    RadioGroup1.Items[i] := Q[AQuestion].Answers[i];
  RadioGroup1.ItemIndex := -1;
Ответить с цитированием
  #4  
Старый 18.06.2010, 23:09
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

TQuestion = record //что это означает?
Это опредедление пользовательской структуры данных.

QRights := 0; // что это означает?
Инициализация переменной. Здесь будет считаться кол-во правильных ответов

btNextClick(Self); // это следующий вопрос??
Ага, оно самое. Обработчик кнопки перехода к сл. вопросу.

If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights); // обяъсните здесь как
Читаем про соотв. компонент. В св-ве ItemIndex "лежит" номер выбранной радиокнопки из всех в группе. Тупо сравниваем его с номером прав. ответа.

Memo1.Lines.Text := ''; //здесь как бы лог ведётся ??
Нет. Это просто поле, где выводится текст вопроса. В данном месте нам надо его очистить.

Да, еше надо поправить кусочек кода:
Код:
1
2
3
4
5
6
// Выводим след. вопрос
  Memo1.Lines.Text := Q[AQuestion].Text;
  RadioGroup1.Items.Clear;
  For I := 0 To 3 Do
    RadioGroup1.Items.Add(Q[AQuestion].Answers[i]);
  RadioGroup1.ItemIndex := -1;
Ответить с цитированием
  #5  
Старый 18.06.2010, 23:58
Аватар для nickname
nickname nickname вне форума
Прохожий
 
Регистрация: 19.05.2010
Сообщения: 30
Репутация: 10
По умолчанию

хорошо, завтро посмотрю, спасибо
Ответить с цитированием
  #6  
Старый 19.06.2010, 02:12
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,105
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну ты нахал!!!
Одолжение мне делаешь?
Ответить с цитированием
  #7  
Старый 19.06.2010, 17:38
Аватар для nickname
nickname nickname вне форума
Прохожий
 
Регистрация: 19.05.2010
Сообщения: 30
Репутация: 10
По умолчанию

почему нахал то?
а может лучше мой код доделать? просто он мне гораздо понятнее
Ответить с цитированием
  #8  
Старый 20.06.2010, 08:06
Аватар для Marvel
Marvel Marvel вне форума
Начинающий
 
Регистрация: 14.06.2010
Адрес: Пятигорск
Сообщения: 121
Репутация: 24
По умолчанию

у меня есть готовая прога на Builder'е с базой данных на ADO, там два уровня, если набираешь определённое кол-во балов в первом уровне, то пускает на второй, если не набрал - то ламер ))) для какова-то студента писал, могу переписать на Delphi и поделицца

P.S. код элементарный, писался для студента-рас..дяя
__________________
Коли навчався в школі я - в мені росли мозгЫ. КудИж вони поділися? гы-гы гы-гы гы-гы...


ICQ: 593977748
Nick: Marvel
Ответить с цитированием
  #9  
Старый 20.06.2010, 11:41
Аватар для nickname
nickname nickname вне форума
Прохожий
 
Регистрация: 19.05.2010
Сообщения: 30
Репутация: 10
По умолчанию

Цитата:
Сообщение от Marvel
у меня есть готовая прога на Builder'е с базой данных на ADO, там два уровня, если набираешь определённое кол-во балов в первом уровне, то пускает на второй, если не набрал - то ламер ))) для какова-то студента писал, могу переписать на Delphi и поделицца

P.S. код элементарный, писался для студента-рас..дяя

было бы круто, но прога уже есть, осталось только доделать, зачем новую создавать то?
если ты хорошо разбираешся доделай мою пожалуйста, главное чтобы вопросы с ответами при нажатии "далее" обновлялись и в конце результат правильных ответов был и код простенький а не на больше 100 строк ну я про основной
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 04:43.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025