Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

даже не знаю как назвать... [D7, XP]


Bullfrog ©   (2007-06-11 20:26:00) 

придумал какой-то "ломанный" алгоритм теста, который должен уметь обрабатывать вопросы простого выбора(чекбокс) и вопросы на сопосталение(здесь используется мемо и несколько эдитов)
Запускаем программу, проходим тест один раз(вроде все нормально), пытаемся пройти другой тест, но он уже не работает. Отображается последний вопрос предыдущего теста, а варианты ответа(ни чекбоксы, ни эдиты) вообще не отображаются, хотя им присваивается висибл := тру.
Всю голову уже сломал, меня явно заклинило, помогите, пожалуйста!
Пожалуйста, не бейте сильно за такой вопрос, но я уже не могу.
щас закину коды...


Bullfrog   (2007-06-11 21:48:00) [1]

Каюсь! Каюсь! Каюсь! Меня и правда заклинило,5 часов над этой ерундой сидел, а оказалось формат одного файла не отвечал требованиям. Так как после переделок алгоритма упустил изменение одного файла(теста).
вот я гоню!

Простите меня за такой флуд, надеюсь, подобного не повторится.


Bullfrog   (2007-06-11 20:31:00) [2]

var st: string; ocenka:integer; Users: UserInfo;
tq: string;              //rq-right question, tq-total question, nq-number question
begin
//prinimaem otvet
   tq:='';
   if checkbox1.Checked then tq:= '1.';
   if checkbox2.Checked then tq:= tq + '2.';
   if checkbox3.Checked then tq:= tq + '3.';
   if checkbox4.Checked then tq:= tq + '4.';
   if checkbox5.Checked then tq:= tq + '5.';
   if checkbox6.Checked then tq:= tq + '6.';
   if checkbox7.Checked then tq:= tq + '7.';
   if checkbox8.Checked then tq:= tq + '8.';
   if checkbox9.Checked then tq:= tq + '9.';
   if checkbox10.Checked then tq:= tq + '10.';
   //esli tq pustoi, znachit bil vopros na sootvetstvie, pinimaem ego
   if tq = '' then begin
   tq:='1'+Edit1.Text+'.';
   tq:=tq+'2'+Edit2.Text+'.';
   tq:=tq+'3'+Edit3.Text+'.';
   tq:=tq+'4'+Edit4.Text+'.';
   tq:=tq+'5'+Edit5.Text+'.';
   tq:=tq+'6'+Edit6.Text+'.';
   tq:=tq+'7'+Edit7.Text+'.';
   tq:=tq+'8'+Edit8.Text+'.';
   tq:=tq+'9'+Edit9.Text+'.';
   tq:=tq+'10'+Edit10.Text+'.';
   end;
//vikluchaem formu testa
Memo1.Visible := False;
Label2.Visible := False;
Label3.Visible := False;
Label4.Visible := False;
Label5.Visible := False;
Label6.Visible := False;
Label7.Visible := False;
Label8.Visible := False;
Label9.Visible := False;
Label10.Visible := False;
Label11.Visible := False;
Edit1.Visible := False;
Edit2.Visible := False;
Edit3.Visible := False;
Edit4.Visible := False;
Edit5.Visible := False;
Edit6.Visible := False;
Edit7.Visible := False;
Edit8.Visible := False;
Edit9.Visible := False;
Edit10.Visible := False;
//sbrsivaem editi
Edit1.Text :='';
Edit2.Text :='';
Edit3.Text :='';
Edit4.Text :='';
Edit5.Text :='';
Edit6.Text :='';
Edit7.Text :='';
Edit8.Text :='';
Edit9.Text :='';
Edit10.Text :='';
CheckBox1.Visible := False;
CheckBox2.Visible := False;
CheckBox3.Visible := False;
CheckBox4.Visible := False;
CheckBox5.Visible := False;
CheckBox6.Visible := False;
CheckBox7.Visible := False;
CheckBox8.Visible := False;
CheckBox9.Visible := False;
CheckBox10.Visible := False;
//sbrasivaem checkboxi
  checkbox1.Checked := false;
  checkbox2.Checked := false;
  checkbox3.Checked := false;
  checkbox4.Checked := false;
  checkbox5.Checked := false;
  checkbox6.Checked := false;
  checkbox7.Checked := false;
  checkbox8.Checked := false;
  checkbox9.Checked := false;
  checkbox10.Checked := false;
 inc(nq); buf:='';
 readln(f,buf); if buf = tq then begin inc(rq); end;
 readln(f,buf);
//zapolnyaem sledujushii vopros
if Not Eof(f) then begin
if buf = 'v' then begin
 readln(f,buf);
 label1.Visible :=true;
 label1.Caption := buf;
 readln(f,buf);
 checkbox1.Visible := true;
 checkbox1.Caption := buf;
 readln(f,buf);
 checkbox2.Visible := true;
 checkbox2.Caption := buf;
 readln(f,buf);
 if buf<>'---' then begin checkbox3.Visible := true;
 checkbox3.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox4.Visible := true;
 checkbox4.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox5.Visible := true;
 checkbox5.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox6.Visible := true;
 checkbox6.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox7.Visible := true;
 checkbox7.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox8.Visible := true;
 checkbox8.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox9.Visible := true;
 checkbox9.Caption := buf;  end;
 readln(f,buf);
 if buf<>'---' then begin checkbox10.Visible := true;
 checkbox10.Caption := buf;  end;
end
else if buf = 's' then begin
 Label1.Visible := True;
 Label2.Visible :=true;
 Label3.Visible :=true;
 Label4.Visible :=true;
 Label5.Visible :=true;
 Label6.Visible :=true;
 Edit1.Visible := True;
 Edit2.Visible := True;
 Edit3.Visible := True;
 Edit4.Visible := True;
 Edit5.Visible := True;
 Memo1.Visible := True;
 readln(f,buf);
 label1.Caption := buf;
 for i:=1 to 10 do begin readln(f,buf); memo1.Lines.Add(buf); end; end;
end
//zdes budet else
Else begin
 end;

if (rq/nq)<=0.15 then ocenka:=1
 else if (rq/nq)<=0.25 then ocenka:=2
         else if (rq/nq)<=0.5 then ocenka:=3
               else if (rq/nq)<=0.75 then ocenka:=4
                    // else if (rq/nq)<=0.95 then ocenka:=4
                           else ocenka:=5;
rq:=0; flush(f);
closefile(f); buf:='';
renamefile('test','Test'+inttostr(numtest)+'.tst');
assignfile(DataFile, 'users');
WebBrowser1.Show;
Button7.Visible := false; Button8.Visible := false;
Button1.Enabled := true; Button2.Enabled := true;
Button3.Enabled := true; Button4.Enabled := true;
Button5.Enabled := true; Button6.Enabled := true;
BtnTest.Enabled := true; TreeView1.Enabled :=true;
reset(DataFile);
Seek(DataFile, 0);
case numtest of
1: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka1:=inttostr(ocenka);
     end;
     write(DataFile,Users);
   end;
2: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka2:=inttostr(ocenka);
     end;
     Seek(DataFile, FilePos(DataFile)-1);
     write(DataFile,Users);
   end;
3: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka3:=inttostr(ocenka);
     end;
     Seek(DataFile, FilePos(DataFile)-1);
     write(DataFile,Users);
   end;
4: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka4:=inttostr(ocenka);
     end;
     Seek(DataFile, FilePos(DataFile)-1);
     write(DataFile,Users);
   end;
 5: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka5:=inttostr(ocenka);
     end;
     Seek(DataFile, FilePos(DataFile)-1);
     write(DataFile,Users);
   end;
 6: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka6:=inttostr(ocenka);
     end;
     Seek(DataFile, FilePos(DataFile)-1);
     write(DataFile,Users);
   end;
 7: begin
     while not eof(DataFile) do
     begin
      read(DataFile, Users);
      if (AvtLog = Users.Login) and (AvtPas = Users.Password)
      then With Users do ocenka7:=inttostr(ocenka);
     end;
     Seek(DataFile, FilePos(DataFile)-1);
     write(DataFile,Users);
   end;
  end;
end;

Еще раз прошу прощенья! Буду далгодарен любой посильной помощи


Bullfrog   (2007-06-11 20:28:00) [3]

if TreeView1.Items[6].Selected then// Showmessage('Test1');//test1
Begin WebBrowser1.Hide;
     Button7.Visible := true;
     Button8.Visible := True;
     TreeView1.Enabled := false;
     Button1.Enabled := false;
     Button2.Enabled := false;
     Button3.Enabled := false;
     Button4.Enabled := false;
     Button5.Enabled := false;
     Button6.Enabled := false;
     BtnTest.Enabled := false;
     rq:=0; nq:=0; numtest:=1; buf:='';
//zapolnyaem pervii vopros
//proveryaem kakoi vid voprosa
     renamefile('Test1.tst','test');
     assignfile(f,'test');
     reset(f);
     readln(f,buf);
     if buf = 'v' then
     begin readln(f,buf);
           label1.Visible :=true;
           label1.Caption := buf;
           readln(f,buf);
           checkbox1.Visible := true;
           checkbox1.Caption := buf;
           readln(f,buf);
           checkbox2.Visible := true;
           checkbox2.Caption := buf;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox3.Visible := true;
                 checkbox3.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox4.Visible := true;
                 checkbox4.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox5.Visible := true;
                 checkbox5.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox6.Visible := true;
                 checkbox6.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox7.Visible := true;
                 checkbox7.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox8.Visible := true;
                 checkbox8.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox9.Visible := true;
                 checkbox9.Caption := buf; end;
           readln(f,buf);
           if buf<>'---' then
           begin checkbox10.Visible := true;
                 checkbox10.Caption := buf; end;
     end
     else if buf = 's' then
     begin Label1.Visible := True;
           Label2.Visible :=true;
           Label3.Visible :=true;
           Label4.Visible :=true;
           Label5.Visible :=true;
           Label6.Visible :=true;
//            Label7.Visible :=true;
//            Label8.Visible :=true;
//            Label9.Visible :=true;
//            Label10.Visible :=true;
//            Label11.Visible :=true;
           Edit1.Visible := True;
           Edit2.Visible := True;
           Edit3.Visible := True;
           Edit4.Visible := True;
           Edit5.Visible := True;
//            Edit6.Visible := True;
//            Edit7.Visible := True;
//            Edit8.Visible := True;
//            Edit9.Visible := True;
//            Edit10.Visible := True;
           Memo1.Visible := True;
           readln(f,buf);
           label1.Caption := buf;
           for i:=1 to 10 do
           begin readln(f,buf); memo1.Lines.Add(buf); end;
     end;
 end;
эта штука нажимается один раз, для перелистывания вопрос, подсчета баллов и тд написана следующая вещь:


Наверх

Титульная страница Поиск, карта сайта Написать письмо