| 
                          dolphin
                         | 
                        
                          Дата: Суббота, 17.01.2009, 22:56 | Сообщение # 1
                         | 
                       
                      
                        
                           
                          
                            Администратор
                           
                          
                            Сообщений: 902
                           
                          
                            Статус: Offline
                           
                         | 
                        
                          
                          
                            
                            
                              Code
                             
                            
                              Листинг procedure TForm1.BitBtn1Click 
                               
                              procedure TForm1.BitBtn1Click(Sender: TObject); 
                               
                              var n, i: integer; 
                               
                              userans, corranswer: string; 
                               
                              begin 
                               
                              IF Edit1.Text<> '' then //Если хоть что-то написано, то 
                               
                              begin 
                               
                              n:=1; i:=1; //Инициализируем переменные 
                               
                              totvarans:= DBMemo1.Lines.Count; //Сколько вариантов 
                               
                              totcorrcount:= length(ClientDataSet1CorrectAnswer.Value);//Сколько из них правильных 
                               
                              userans:= Edit1.text;//Возьмем вариант юзера 
                               
                              corranswer:= ClientDataSet1CorrectAnswer.Value;//И возьмем ПРАВИЛЬНЫЙ вариант <img src="http://s5.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile"> 
                               
                              balls:=0; //Пока 0 баллов 
                               
                              REPEAT //Начнем последовательно сравнивать - каждый вариант юзера со всеми правильными 
                               
                              IF userans[i]=corranswer[n] then //Если правильно, то 
                               
                              begin 
                               
                              Inc(i);//Проверим следующий пользовательский 
                               
                              n:=1; //Начиная с первого символа правильного ответа 
                               
                              balls:= balls+(100 div totcorrcount); //Вычислим, скольких баллов достоин 
                               
                              end else //А если неправильно 
                               
                              begin 
                               
                              IF n<>length(corranswer) then INC(n) else //если правильные кончились, значит юзер 
                               
                              //не прав и этот ответ не засчитывается. Если не кончились, то сравним со следующим 
                               
                              begin 
                               
                              INC (i); //Перейдем к следующему варианту 
                               
                              n:=1; //Сравнивать будем с первым правильным 
                               
                              end; 
                               
                              end; 
                               
                              UNTIL i>length(userans); //Завяжем, если кончатся все варианты 
                               
                              TotalBalls:= totalballs + balls; //Подсчитаем итоговое число баллов 
                               
                              Inc(lim); //Еще один вопрос отвечен... 
                               
                              IF lim=limit then //Если лимит достигнут, то 
                               
                              ShowMessage ('Вы набрали '+ inttostr((totalballs*100) div (limit*100))+' из 100 возможных!') 
                               
                              //Пересчитаем общее число баллов на 100 и выдадим заключение 
                               
                              else Clientdataset1.Next; //Иначе перейдем к следующему вопросу 
                               
                              end; //Здесь ты можешь поставить else на случай пустого Edit’а 
                               
                              end;
                             
                            
                           
                          Система: Windows 10 x64, Windows XP 
                          Среды программирования: Delphi 7, Delphi 10 Seattle 
                           
                          Я не профессионал, я всего лишь любитель 
                          Я не вредитель, я всего лишь теоретик
                         | 
                       
                      
                        |   | 
                        
                          
                         | 
                       
                     
                   |