|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Пишу достаточно примитивный тест. Не понимаю как отловить некоторые ошибки
Собственно, код: (во вложениях полностью программа)
Код:
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. |
#2
|
||||
|
||||
Проблемка
Чего-то архив качаться не хочет...
Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. |
#3
|
||||
|
||||
закомментарь:
Код:
procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); // procedure Randomm(NQuest:Integer;var a:array of Integer); Код:
procedure Randomm(NQuest:Integer;var a:array of Integer); var m,x:Integer; f:Boolean; begin ... end; Код:
implementation {$R *.dfm} Пишу программы за еду. __________________ |