Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.01.2011, 23:39   #1
KitoPoni
Пользователь
 
Регистрация: 15.12.2010
Сообщений: 11
По умолчанию Тест. Delphi

Привет всем.
Мне уже помогли с написанием программы.
Вот только осталось понять, куда и вместо чего вставить кусок проги.

Сама программа:
Код:
 unit Unit1;
 
interface
 
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, jpeg;
 
type
Tform1 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
RadioGroup1: TRadioGroup;
Button2: TButton;
Label3: TLabel;
Panel1: TPanel;
Image1: TImage;
Button3: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
 
private
{ Private declarations }
 
public
{ Public declarations }
procedure GenerateNewQ;
procedure GenerateResult;
procedure GenerateLost;
end;
 
const
Q = 'Вопрос ';
O_k = 'Верно';
_of = ' из ';
Win1 = 'Вы успешно прошли тест!';
win2 =' Поздравляем';
Iost2 = 'Неверно';
Lost1 = 'Вы не прошли тест. Вы не умнее пятиклассника! ';
var
Forml: Tform1;
N : Integer;
num : Integer;
ri : Integer;
implementation
uses Unit2; {$R *.dfm}
procedure Tform1.GenerateNewQ;
var S: String;
begin
 
begin
inc(num);
label1l.Caption: = Q+inttostr(num)+_of+inttostr(N);
readln(S); Iabel2.Caption: = S;
readln(S); RadioGroup1.Items.Strings[0]:= S;
readln(S); RadioGroup1.Items.Strings[1]:= S;
readln(S); RadioGroup1.Items.Strings[2]:= S;
readln(S); RadioGroup1.Items.Strings[3]:= S;
RadioGroup1. Buttons[ri] .Checked: = false;
readln(ri);
end
end;
 
procedure Tform1.GenerateResult; begin
label1.Caption: = win2;
Iabel2.Caption: = win1;
label3.Visible:= false;
button1.Visible: = false;
radiogroup1.Visible: = false;
end;
 
procedure Tform1.GenerateLost;
begin
label1.Caption := Iost2;
Iabel2.Caption: = lost1;
Iabel3.Visible: = false;
Button1.Visible: = false;
Radiogroup1.Visible:= false;
end;
 
procedure Tform1.FormCreate(Sender: TObject);
begin
num:= 0;
assignfile(input, 'test.txt'); readln(N); if (N>0)then
GenerateNewQ
else
begin closefile(input);
form1.Close
end;
 
end;
procedure Tform1.Button1Click(Sender: TObject);
begin
If (RadioGroup1.Buttons[ri].Checked) and (num<N) then
begin
label3.Caption:= Q+inttostr(num)+' - '+O_k;
GenerateNewQ;
End
 
else
if (num=N) and (RadioGroup1.Buttons[ri].Checked) then
GenerateResult
 
Else
if (not RadioGroup1.Buttons[ri].Checked) then
GenerateLost;
end;
 
procedure Tform1.Button2Click(Sender: TObject);
begin
closefile(input);
forml.Close;
end;
 
procedure Tform1.Button3Click(Sender: TObject); begin
form2.show;
end;
end.
Необходимо сделать, чтобы вопросы для теста брались из файла test.txt не по порядку 10, а допустим 10 из 50 рандомом.

Вот мне сделали этот кусочек, вместо чего его вставить в основной код?
Код:
 procedure TForm1.FormActivate(Sender: TObject);
var k:integer;
    V:array of string;
    Vopr:string;
    NumQ:integer;
begin
                     // считать в массив
assignfile(f,'input\test.txt');
reset(f);
k:=0;
while not eof(f) do begin
inc(k);
read(f,V[k]);
end;
closefile(f);
                  // вытащить по random из массива
NumQ:=random(k)+1;
while V[NumQ]='' do begin
NumQ:=random(k)+1;
Vopr:=V[NumQ];
end;
 
 
                //обнулить вопрос в массиве
V[NumQ]:='';
 
form1.Close;
end;

Последний раз редактировалось KitoPoni; 19.01.2011 в 23:42.
KitoPoni вне форума Ответить с цитированием
Старый 20.01.2011, 12:04   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

смотри свойства формы (Object Inspector) там будет вкладка Events в ней 2 раза тыкни на OnActivate и попадешь туда куда надо вставить этот кусок
fbus вне форума Ответить с цитированием
Старый 20.01.2011, 12:43   #3
SNUPY
Форумчанин
 
Регистрация: 15.02.2008
Сообщений: 621
По умолчанию

ИМХО переделывать надо все под загрузку вопросов под структуру:
Код:
TAnswers = array of Strings;
TTestQuestion = record
  QuestionName: string;
  Answers: TAnswers;
  RightAnswerIndex: Byte;
end;
TTestQuestions = array of TTestQuestion
Помог? Ну так нажми на весы!
SNUPY вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тест в Delphi Dran1k Общие вопросы Delphi 6 12.05.2010 17:18
тест на Delphi Джонни Помощь студентам 3 11.03.2010 00:11
тест в delphi nenuphar Помощь студентам 4 27.11.2009 17:57
Тест на delphi Серый Рыйцарь Помощь студентам 1 11.05.2009 05:58
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi Верчик Помощь студентам 9 02.03.2009 17:46