![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
||||
|
||||
|
помогите пожалуйста доделать код тестовой программы
Код:
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
|
|||
|
|||
|
Маньяк!!!
Для тестовой программы тебе надо: 1. Memo - выводить вопрос 2. TRadioGroup - для вывода ответов и выпора пользователя. 3. Массив данных вида "Вопрос, Ответ1..ОтветN, Номер правильного ответа". 4. Цикл по вопросам с подсчетом кол-ва правильных ответов. Пусть у нас всегда будет 4 варианта ответов, один из которых правильный (простейший вариант): Код:
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
|
||||
|
||||
|
да по размеру то же самое получается ! почти, что то я непойму вашего кода , новичёк в делфи не судите строго
Код:
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
|
|||
|
|||
|
TQuestion = record //что это означает?
Это опредедление пользовательской структуры данных. QRights := 0; // что это означает? Инициализация переменной. Здесь будет считаться кол-во правильных ответов btNextClick(Self); // это следующий вопрос?? Ага, оно самое. Обработчик кнопки перехода к сл. вопросу. If RadioGroup1.ItemIndex = Q[AQuestion].RightAnswer Then Inc(QRights); // обяъсните здесь как Читаем про соотв. компонент. В св-ве ItemIndex "лежит" номер выбранной радиокнопки из всех в группе. Тупо сравниваем его с номером прав. ответа. Memo1.Lines.Text := ''; //здесь как бы лог ведётся ?? Нет. Это просто поле, где выводится текст вопроса. В данном месте нам надо его очистить. Да, еше надо поправить кусочек кода: Код:
// Выводим след. вопрос
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
|
||||
|
||||
|
хорошо, завтро посмотрю, спасибо
|
|
#6
|
|||
|
|||
|
Ну ты нахал!!!
Одолжение мне делаешь? |
|
#7
|
||||
|
||||
|
почему нахал то?
а может лучше мой код доделать? просто он мне гораздо понятнее |
|
#8
|
||||
|
||||
|
у меня есть готовая прога на Builder'е с базой данных на ADO, там два уровня, если набираешь определённое кол-во балов в первом уровне, то пускает на второй, если не набрал - то ламер ))) для какова-то студента писал, могу переписать на Delphi и поделицца
P.S. код элементарный, писался для студента-рас..дяя |
|
#9
|
||||
|
||||
|
Цитата:
было бы круто, но прога уже есть, осталось только доделать, зачем новую создавать то? если ты хорошо разбираешся доделай мою пожалуйста, главное чтобы вопросы с ответами при нажатии "далее" обновлялись и в конце результат правильных ответов был и код простенький а не на больше 100 строк ну я про основной |