unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Button1: TButton;
Memo2: TMemo;
Button2: TButton;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
RadioButton5: TRadioButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Randomm(NQuest:Integer;var a:array of Integer);
private
{ Private declarations }
public
Radiobutton:TObject;
S,NoPrav:Integer; { Public declarations }
end;
var
Form1: TForm1;
T,S,i,j:Integer;
C:String; {Переменная для строчки из файла Questions.txt и ее обработки}
NQuest, MQuest:Integer; {Кол-во вопросов всего; кол-во требуемых для теста}
N:array[1..500] of Integer;
NoVariant,NoPrav:Integer; {Кол-во вариантов ответа; номер правильного}
{========================================}
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo2.Lines.LoadFromFile('text/questions.txt');
T:=0;
C:=memo2.lines[T];
NQuest:=StrToInt(copy(C,2,Pos(',',C)-2));
MQuest:=StrToInt(copy(C,Pos(',',C)+1,Pos(']',C)-Pos(',',C)-1));
c:=copy(C,Pos(']',C)+1, length(C)-Pos(']',C)); {Тема теста}
Form1.caption:='Тест по теме: ' + C; {+label для формы регистрации}
Label1.Caption:='Тест по теме: ' + C;
{=====Рандомный выбор MQuest вопросов из количества NQuest=====================}
Randomm(NQuest, N);
Button2.Hide;
Label5.Hide;
Label6.Hide;
Label7.Hide;
RadioButton1.Hide;
RadioButton2.Hide;
RadioButton3.Hide;
RadioButton4.Hide;
RadioButton5.Hide;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if (Edit1.Text='')or (Edit1.Text=' ') then
begin
ShowMessage('Ошибка. '+#13#10+'Пожалуиста введите фамилию.');
abort;
end;
if (Edit2.Text='')or (Edit2.Text=' ') then
begin
ShowMessage('Ошибка. '+#13#10+'Пожалуиста введите имя.');
abort;
end;
if (Edit3.Text='')or (Edit3.Text=' ') then
begin
ShowMessage('Ошибка. '+#13#10+'Пожалуйста введите номер группы.');
abort;
end;
Memo1.Lines.LoadFromFile('text/info.txt');
Memo1.Lines.Add(Edit1.Text+' '+Edit2.Text+' '+Edit3.Text
+' ('+TimeToStr(now)+','+DateToStr(now)+' )');
Memo1.Lines.SaveToFile('text/info.txt');
label1.Hide;
label2.Hide;
label3.Hide;
label4.Hide;
edit1.Hide;
edit2.Hide;
edit3.Hide;
button1.Hide;
button2.Show;
label5.Show;
label6.Show;
label7.Show;
RadioButton1.Show;
RadioButton2.Show;
RadioButton3.Show;
RadioButton4.Show;
RadioButton5.Show;
{=====Вопросы и варианты ответа================================================}
For i:=1 to NQuest do
begin
RadioButton1.Checked:=False;
RadioButton2.Checked:=False;
RadioButton3.Checked:=False;
RadioButton4.Checked:=False;
RadioButton5.Checked:=False;
t:=t+1;
C:=Memo2.Lines[T]; {Чтение след строки - строки вопроса}
For j:=1 to MQuest do
begin
If i=N[j] then
begin
NoVariant:=StrToInt(Copy(C,2,pos(',',C)-2)); {NoVariant - кол-во вариантов ответа}
C:=Copy(C, Pos(',',C)+1,Length(C)-pos(',',C)-1);
NoPrav:=StrToInt(Copy(C,pos(']',C)-1,Length(C)-pos(']',C)-1)); {NoPrav - номер правильного ответа}
C:=Copy(C, pos(']',C)+1,Length(C)-pos(']',C)+1);
{Обработка вопроса и выведение его на форму}
if Length(C)>60 then
begin
label5.Caption:=Copy(C,1,60);
C:=Copy(C,61,length(C)-60);
If Length(C)>60 then
begin
label6.Caption:=Copy(C,1,60);
C:=Copy(C,61,length(C)-60);
If Length(C)>60 then
label7.Caption:=Copy(C,1,60)
else
label7.Caption:=C;
end
else
begin
label6.caption:=C;
label7.hide;
end;
end
else
begin
label5.caption:=C;
label6.hide;
label7.hide;
end;
end;
{=====Варианты выбора=================}
radiobutton1.caption:=Memo2.Lines[t];
radiobutton2.caption:=Memo2.Lines[t+1];
t:=t+2;
If NoVariant>2 then
If NoVariant=3 then
begin
radiobutton3.caption:=Memo2.Lines[t];
radiobutton4.Hide;
radiobutton5.Hide;
t:=t+1;
end
else
If NoVariant=4 then
begin
radiobutton3.caption:=Memo2.Lines[t];
radiobutton4.caption:=Memo2.Lines[t+1];
radiobutton5.Hide;
t:=t+2;
end
else
If NoVariant=5 then
begin
radiobutton3.caption:=Memo2.Lines[t];
radiobutton4.caption:=Memo2.Lines[t+1];
radiobutton5.caption:=Memo2.Lines[t+2];
t:=t+3;
end;
end;
end; }
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
case NoPrav of
1:if radiobutton1.checked then
S:=S+1;
2:if radiobutton2.checked then
S:=S+1;
3:if radiobutton3.checked then
S:=S+1;
4:if radiobutton4.checked then
S:=S+1;
5:if radiobutton5.checked then
S:=S+1;
end;
end;
{эта процедура нагло скопирована}
procedure Randomm(NQuest:Integer;var a:array of Integer);
var
m,x:Integer;
f:Boolean;
begin
m:=2;
Randomize;
for i := 1 to NQuest do
begin
repeat
f:=false;
x:=Random(NQuest+1);
for j:=1 to m do
if N[j]=x then f:=true;
until f=false;
N[i]:=x;
m:=m+1;
end;
end;
end.