Jump to content
Soledad

help me to finish Quiz ,please

Recommended Posts

Soledad

hello everybody

I'm working on a quiz depending on "ini" files:

DB.ini : to get the questions 

ans.ini : to save the answers

the quiz I'm working can save the previous answers but I'm facing a problem when back and forward 

this is the main code

#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <Date.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#NoTrayIcon
Opt("TrayIconHide", 1)
Opt("MustDeclareVars", 1)
Opt("GUICloseOnESC", 0) ;1=ESC  closes, 0=ESC won't close
;~ ----------------------------------------------------------------------
Local $qui_width,$qui_hight,$GUIMsg,$var_qs,$Key_qs,$xi,$TXTxLen,$data_ans,$ans_ini
Local $QSTN,$A,$B,$C,$D,$Aopt,$Bopt,$Copt,$Dopt

Local $var_ini,$Key_ans,$sData0


Local $File = "DB.ini", $font = "Lucida Console"
Global $i = 1



$ans_ini = "ans.ini"
$sData0 = "ans=1"

If FileExists($ans_ini) = 0 Then
    FileOpen($ans_ini, 1)
    FileClose($ans_ini)
    IniWriteSection($ans_ini, "1", $sData0)
 EndIf




$qui_width = 1250
$qui_hight = 675
local $hGUI = GUICreate("Quiz" , $qui_width, $qui_hight)
GUISetBkColor(0xFFFFD4)
;~ ---------------------------------------------------------
guictrlcreategroup("question", 20, 35, $qui_width-40, 75 )
;~ ---------------------------------------------------------




guictrlcreategroup("answers", 20, 125, 500, 424 )
;~ ---------------------------------------------------------
guictrlcreategroup("A", 40, 145, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
guictrlcreategroup("B", 40, 243, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
guictrlcreategroup("C", 40, 341, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
guictrlcreategroup("D", 40, 439, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
;~ ---------------------------------------------------------
;~ A


$A = GUICtrlCreateLabel("",75 ,185,420,45,$GUI_ONTOP) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Aopt = GUICtrlCreateRadio("", 57,170,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
;~ B
$B = GUICtrlCreateLabel("",75 ,283,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Bopt = GUICtrlCreateRadio("", 57,268,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
;~ C
$C = GUICtrlCreateLabel("",75 ,381,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Copt = GUICtrlCreateRadio("", 57,366,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
;~ D
$D = GUICtrlCreateLabel("",75 ,479,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Dopt = GUICtrlCreateRadio("", 57,464,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
Local $count = GUICtrlCreateLabel("",500 ,575,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)


;~ Buttons
Local $next = GUICtrlCreateButton("next",300,600,100,50)
Local $prev = GUICtrlCreateButton("prev",100,600,100,50)



;~ ---------------------------------------------------------
guictrlcreategroup("img", 540, 125, 690, 424 )
;~ ---------------------------------------------------------

NextData()
GUISetState(@SW_SHOW)

GUICtrlSetState($prev,$GUI_DISABLE)


While 1
   $GUIMsg = GUIGetMsg()
   Select
   Case $GUIMsg = $GUI_EVENT_CLOSE;, $nExititem
      FileDelete($ans_ini)
      Exit
;~    --------------------------------------------$unchk
   Case $GUIMsg = $next
      DetectChkOpt()
;~    --------------------------------------------
   Case $GUIMsg = $prev
      prevData()
   EndSelect

WEnd




Func NextData()
   $var_ini = IniReadSectionNames($ans_ini)
   $var_qs = IniReadSectionNames($File)

   ;MsgBox(0,"", "$i=" & $i & " - lav[0]=" & $var_ini[0])

   If $i <= $var_qs[0] Then
      If $i > $var_ini[0] Then
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)

         $Key_qs = IniReadSection($File, $var_qs[$i])
         ;~ ---------------------------------------------------------
         $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75,64,500,45) ; Question text
         GUICtrlSetFont(-1, 12,650, $font)
         GUICtrlSetColor(-1, 0x008fd7)
         ;~    ----------------------------------------------------------
         GUICtrlSetData($A,$Key_qs[2][1])
         GUICtrlSetData($B,$Key_qs[3][1])
         GUICtrlSetData($C,$Key_qs[4][1])

         If $Key_qs[5][1] = "-" Then
           GUICtrlSetState($Dopt,$GUI_HIDE)
           GUICtrlSetData($D,"")
         Else
            GUICtrlSetState($Dopt,$GUI_SHOW)
            GUICtrlSetData($D,$Key_qs[5][1])
         EndIf

            $i=$i+1
      Else

         $Key_ans = IniReadSection($ans_ini, $var_ini[$i])
         If $Key_ans[1][1] = "A" Then
            GUICtrlSetState($Aopt,$GUI_CHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "B" Then
            GUICtrlSetState($Bopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "C" Then
            GUICtrlSetState($Copt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "D" Then
            GUICtrlSetState($Dopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
         EndIf

         $Key_qs = IniReadSection($File, $var_qs[$i])
         ;~ ---------------------------------------------------------
         $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75 ,64,500,45) ; Question text
         GUICtrlSetFont(-1, 12,650, $font)
         GUICtrlSetColor(-1, 0x008fd7)
         ;~    ----------------------------------------------------------
         GUICtrlSetData($A,$Key_qs[2][1])
         GUICtrlSetData($B,$Key_qs[3][1])
         GUICtrlSetData($C,$Key_qs[4][1])

         If $Key_qs[5][1] = "-" Then
           GUICtrlSetState($Dopt,$GUI_HIDE)
           GUICtrlSetData($D,"")
         Else
            GUICtrlSetState($Dopt,$GUI_SHOW)
            GUICtrlSetData($D,$Key_qs[5][1])
         EndIf

            $i=$i+1

     EndIf

   Else

      Result()

   EndIf

GUICtrlSetData($count,$i)

EndFunc



Func prevData()


   $var_ini = IniReadSectionNames($ans_ini)
   $var_qs = IniReadSectionNames($File)

   If $var_ini[0] = 1 Then
      $i=$var_ini[0]
   Else
      $i=$var_ini[0]-1
   EndIf

   MsgBox(0,"",$var_ini[0])

   $Key_ans = IniReadSection($ans_ini, $var_ini[$i])
   If $var_qs[$i] = $var_qs[1] Then
      GUICtrlSetState($prev,$GUI_DISABLE)
             If $Key_ans[1][1] = "A" Then
            GUICtrlSetState($Aopt,$GUI_CHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "B" Then
            GUICtrlSetState($Bopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "C" Then
            GUICtrlSetState($Copt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "D" Then
            GUICtrlSetState($Dopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
         EndIf

         $Key_qs = IniReadSection($File, $var_qs[$i])

         $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75 ,64,500,45) ; Question text
         GUICtrlSetFont(-1, 12,650, $font)
         GUICtrlSetColor(-1, 0x008fd7)
         ;~    ----------------------------------------------------------
         GUICtrlSetData($A,$Key_qs[2][1])
         GUICtrlSetData($B,$Key_qs[3][1])
         GUICtrlSetData($C,$Key_qs[4][1])

         If $Key_qs[5][1] = "-" Then
           GUICtrlSetState($Dopt,$GUI_HIDE)
           GUICtrlSetData($D,"")
         Else
            GUICtrlSetState($Dopt,$GUI_SHOW)
            GUICtrlSetData($D,$Key_qs[5][1])
         EndIf

   Else

         If $Key_ans[1][1] = "A" Then
            GUICtrlSetState($Aopt,$GUI_CHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "B" Then
            GUICtrlSetState($Bopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "C" Then
            GUICtrlSetState($Copt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "D" Then
            GUICtrlSetState($Dopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
         EndIf

         $Key_qs = IniReadSection($File, $var_qs[$i])

         $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75 ,64,500,45) ; Question text
         GUICtrlSetFont(-1, 12,650, $font)
         GUICtrlSetColor(-1, 0x008fd7)
         ;~    ----------------------------------------------------------
         GUICtrlSetData($A,$Key_qs[2][1])
         GUICtrlSetData($B,$Key_qs[3][1])
         GUICtrlSetData($C,$Key_qs[4][1])

         If $Key_qs[5][1] = "-" Then
           GUICtrlSetState($Dopt,$GUI_HIDE)
           GUICtrlSetData($D,"")
         Else
            GUICtrlSetState($Dopt,$GUI_SHOW)
            GUICtrlSetData($D,$Key_qs[5][1])
         EndIf

   EndIf


EndFunc



Func DetectChkOpt()
   Select
   Case GUICtrlRead($Aopt) = 1
      $data_ans = "ans[" & $i-1 & "]=A"
      IniWriteSection($ans_ini, $i-1, $data_ans)
      MsgBox(0,""," $i=" & $i)
      GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NextData()
;~    =======================
   Case GUICtrlRead($Bopt) = 1
      $data_ans = "ans[" & $i-1 & "]=B"
      IniWriteSection($ans_ini, $i-1, $data_ans)
      MsgBox(0,""," $i=" & $i)
      GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NextData()
;~    =======================
   Case GUICtrlRead($Copt) = 1
      $data_ans = "ans[" & $i-1 & "]=C"
      IniWriteSection($ans_ini, $i-1, $data_ans)
      MsgBox(0,""," $i=" & $i)
      GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NextData()
;~    =======================
   Case GUICtrlRead($Dopt) = 1
      $data_ans = "ans[" & $i-1 & "]=D"
      IniWriteSection($ans_ini, $i-1, $data_ans)
      MsgBox(0,""," $i=" & $i)
      GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NextData()
;~    =======================
   Case Else
      MsgBox(0,"attention","please choose one of these options")
   EndSelect
EndFunc



Func Result()
   Local $rslt = 0
   $var_qs = IniReadSectionNames($File)
   $var_ini = IniReadSectionNames($ans_ini)
;~ ---------------------------------------------------
   For $l = 1 To $var_ini[0]
      $Key_qs = IniReadSection($File, $var_qs[$l])
      $Key_ans = IniReadSection($ans_ini, $var_ini[$l])
      If $Key_ans[1][1] = $Key_qs[6][1] Then
         $rslt = $rslt + 1
      EndIf
   Next
;~ ---------------------------------------------------
   GUICtrlSetData($QSTN,$Key_qs[1][1])
   ;MsgBox(0,"",Ubound($ansr) & "   " & $ai)
   MsgBox(0,"Result", $rslt & " of " & $var_qs[0] )
   $i = $var_ini[0]
   MsgBox(0,"$i = $var_ini[0]-1", $i )
EndFunc

 

and this is example of the questions file: DB.ini

[1]
QS = What is the biggest planet in our solar system?
ans1 = Earth
ans2 = Jupiter
ans3 = Pluto
ans4 = - 
true = B
img = 
[2]
QS = What is the name of the element with the chemical symbol ‘He’?
ans1 = Helium
ans2 = Hydrogen 
ans3 = Oxygen
ans4 = nitrogen
true = A
img = 
[3]
QS = How many bones do sharks have in their bodies?
ans1 = 20
ans2 = 50
ans3 = 0
ans4 = 10
true = C
img =

 

may be the code is long or has many errors but that what I can :)

 

please help me I have to finish soon please 

 

Edited by Soledad

Share this post


Link to post
Share on other sites
SadBunny

You say you are facing a problem. Please describe the problem. It will aid your quest for quick help.

  • Like 1

Roses are FF0000, violets are 0000FF... All my base are belong to you.

Share this post


Link to post
Share on other sites
Soledad

I've mode a new code and correct some issues 

everything become OK except one thing 

 

when reach to the end and get the result, I backward to the first and it's OK but when forward to the last question it changes the answer although I import the answers from ini file

 

#AutoIt3Wrapper_au3check_parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <ButtonConstants.au3>
#include <Date.au3>
#include <StaticConstants.au3>
#include <Array.au3>
#include <MsgBoxConstants.au3>
#NoTrayIcon
Opt("TrayIconHide", 1)
Opt("MustDeclareVars", 1)
Opt("GUICloseOnESC", 0) ;1=ESC  closes, 0=ESC won't close
;~ ----------------------------------------------------------------------
Local $qui_width,$qui_hight,$GUIMsg,$var_qs,$Key_qs,$xi,$TXTxLen,$data_ans,$ans_ini
Local $QSTN,$A,$B,$C,$D,$Aopt,$Bopt,$Copt,$Dopt

Local $RQSTN,$sCase,$aResults,$Rsize,$ip,$in

Local $var_ans,$Key_ans,$sData0


Local $File = "DB.ini", $font = "Lucida Console"
Local $in = 1



$ans_ini = "ans.ini"
$sData0 = "ans=1"

If FileExists($ans_ini) = 0 Then
    FileOpen($ans_ini, 1)
    FileClose($ans_ini)
    IniWriteSection($ans_ini, "1", $sData0)
 EndIf




$qui_width = 1250
$qui_hight = 675
local $hGUI = GUICreate("Quiz" , $qui_width, $qui_hight)
GUISetBkColor(0xFFFFD4)
;~ ---------------------------------------------------------
guictrlcreategroup("question", 20, 35, $qui_width-40, 75 )
;~ ---------------------------------------------------------




guictrlcreategroup("answers", 20, 125, 500, 424 )
;~ ---------------------------------------------------------
guictrlcreategroup("A", 40, 145, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
guictrlcreategroup("B", 40, 243, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
guictrlcreategroup("C", 40, 341, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
guictrlcreategroup("D", 40, 439, 460, 90 )
GUICtrlSetFont(-1, 10, 650, $font)
;~ ---------------------------------------------------------
;~ A


$A = GUICtrlCreateLabel("",75 ,185,420,45,$GUI_ONTOP) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Aopt = GUICtrlCreateRadio("", 57,170,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
;~ B
$B = GUICtrlCreateLabel("",75 ,283,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Bopt = GUICtrlCreateRadio("", 57,268,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
;~ C
$C = GUICtrlCreateLabel("",75 ,381,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Copt = GUICtrlCreateRadio("", 57,366,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
;~ D
$D = GUICtrlCreateLabel("",75 ,479,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)
;~ ---------------------------------
$Dopt = GUICtrlCreateRadio("", 57,464,15,50)
GUICtrlSetFont(-1, 12,650, $font)
;~ ---------------------------------------------------------
Local $count = GUICtrlCreateLabel("",500 ,575,420,45) ; Question text
GUICtrlSetFont(-1, 12,650, $font)
GUICtrlSetColor(-1, 0x008fd7)


;~ Buttons
Local $next = GUICtrlCreateButton("next",300,600,100,50)
Local $prev = GUICtrlCreateButton("prev",100,600,100,50)



;~ ---------------------------------------------------------
guictrlcreategroup("img", 540, 125, 690, 424 )
;~ ---------------------------------------------------------

FstData()
GUISetState(@SW_SHOW)

GUICtrlSetState($prev,$GUI_DISABLE)


While 1
   $GUIMsg = GUIGetMsg()
   Select
   Case $GUIMsg = $GUI_EVENT_CLOSE;, $nExititem
      FileDelete($ans_ini)
      Exit
;~    --------------------------------------------$unchk
   Case $GUIMsg = $next
      DetectChkOpt()
;~    --------------------------------------------
   Case $GUIMsg = $prev
      PRData()
   EndSelect

WEnd

Func NXData()
   $var_ans = IniReadSectionNames($ans_ini)
   $var_qs = IniReadSectionNames($File)

   $RQSTN = GUICtrlRead($QSTN,1)
   $sCase = ""
   $aResults = StringRegExp(FileRead($File), $sCase & "(?m:^).*" & $RQSTN & ".*(?:\v|$)+", 3)
   $Rsize = UBound($aResults)
   $in = StringTrimLeft(StringSplit($aResults[0],"=]")[1],3)

;MsgBox(0,"$in="& $in ,StringSplit($aResults[0],"=")[2])


   If $in <= $var_qs[0] then

      If $in < $var_qs[0] Then
         $in=$in+1
      Else
         $in=$in
      EndIf

;~    write options
      $Key_qs = IniReadSection($File, $var_qs[$in])
      $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75 ,64,500,45) ; Question text
      GUICtrlSetFont(-1, 12,650, $font)
      GUICtrlSetColor(-1, 0x008fd7)
      ;~    ----------------------------------------------------------
      GUICtrlSetData($A,$Key_qs[2][1])
      GUICtrlSetData($B,$Key_qs[3][1])
      GUICtrlSetData($C,$Key_qs[4][1])

      If $Key_qs[5][1] = "-" Then
        GUICtrlSetState($Dopt,$GUI_HIDE)
        GUICtrlSetData($D,"")
      Else
         GUICtrlSetState($Dopt,$GUI_SHOW)
         GUICtrlSetData($D,$Key_qs[5][1])
      EndIf

;MsgBox(0,"$var_ans[0]",$var_ans[0])
;~    check answers
      If $in > $var_ans[0] Then
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $in < $var_ans[0] Then

;~       check for the last item to enter result
         $RQSTN = GUICtrlRead($QSTN,1)
         $sCase = ""
         $aResults = StringRegExp(FileRead($File), $sCase & "(?m:^).*" & $RQSTN & ".*(?:\v|$)+", 3)
         $Rsize = UBound($aResults)
         $in = StringTrimLeft(StringSplit($aResults[0],"=]")[1],3)
         $Key_ans = IniReadSection($ans_ini, $var_ans[$in])
         If $Key_ans[1][1] = "A" Then
            GUICtrlSetState($Aopt,$GUI_CHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "B" Then
            GUICtrlSetState($Bopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "C" Then
            GUICtrlSetState($Copt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "D" Then
            GUICtrlSetState($Dopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
         EndIf

      Else
;~       check for the last item to enter result
         $RQSTN = GUICtrlRead($QSTN,1)
         $sCase = ""
         $aResults = StringRegExp(FileRead($File), $sCase & "(?m:^).*" & $RQSTN & ".*(?:\v|$)+", 3)
         $Rsize = UBound($aResults)
         $in = StringTrimLeft(StringSplit($aResults[0],"=]")[1],3)
         $Key_ans = IniReadSection($ans_ini, $var_ans[$in])
         MsgBox(0,"last page", "$in=" & $in ) ;& "   Key_ans[1][1]=" & Key_ans[1][1]

         If $Key_ans[1][1] = "A" Then
            GUICtrlSetState($Aopt,$GUI_CHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "B" Then
            GUICtrlSetState($Bopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "C" Then
            GUICtrlSetState($Copt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Dopt,$GUI_UNCHECKED)
         ElseIf $Key_ans[1][1] = "D" Then
            GUICtrlSetState($Dopt,$GUI_CHECKED)
            GUICtrlSetState($Aopt,$GUI_UNCHECKED)
            GUICtrlSetState($Bopt,$GUI_UNCHECKED)
            GUICtrlSetState($Copt,$GUI_UNCHECKED)
         EndIf
         Result()
      EndIf
   EndIf
EndFunc



Func FstData()

   $var_qs = IniReadSectionNames($File)

   GUICtrlSetState($Bopt,$GUI_UNCHECKED)
   GUICtrlSetState($Aopt,$GUI_UNCHECKED)
   GUICtrlSetState($Copt,$GUI_UNCHECKED)
   GUICtrlSetState($Dopt,$GUI_UNCHECKED)

   $Key_qs = IniReadSection($File, $var_qs[1])
   ;~ ---------------------------------------------------------
   $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75,64,500,45) ; Question text
   GUICtrlSetFont(-1, 12,650, $font)
   GUICtrlSetColor(-1, 0x008fd7)
   ;~    ----------------------------------------------------------
   GUICtrlSetData($A,$Key_qs[2][1])
   GUICtrlSetData($B,$Key_qs[3][1])


   If $Key_qs[4][1] = "-" Then
     GUICtrlSetState($Copt,$GUI_HIDE)
     GUICtrlSetData($C,"")
   Else
      GUICtrlSetState($Copt,$GUI_SHOW)
      GUICtrlSetData($C,$Key_qs[4][1])
   EndIf


EndFunc

Func PRData()

   $var_ans = IniReadSectionNames($ans_ini)
   $var_qs = IniReadSectionNames($File)

   $RQSTN = GUICtrlRead($QSTN,1)
   $sCase = ""
   $aResults = StringRegExp(FileRead($File), $sCase & "(?m:^).*" & $RQSTN & ".*(?:\v|$)+", 3)
   $Rsize = UBound($aResults)
   $ip = StringTrimLeft(StringSplit($aResults[0],"=]")[1],3)

   If $ip = 2 Then
      GUICtrlSetState($prev,$GUI_DISABLE)
      $Key_ans = IniReadSection($ans_ini, $var_ans[$ip-1])

      If $Key_ans[1][1] = "A" Then
         GUICtrlSetState($Aopt,$GUI_CHECKED)
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $Key_ans[1][1] = "B" Then
         GUICtrlSetState($Bopt,$GUI_CHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $Key_ans[1][1] = "C" Then
         GUICtrlSetState($Copt,$GUI_CHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $Key_ans[1][1] = "D" Then
         GUICtrlSetState($Dopt,$GUI_CHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
      EndIf

      $Key_qs = IniReadSection($File, $var_qs[$ip-1])
      $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75 ,64,500,45) ; Question text
      GUICtrlSetFont(-1, 12,650, $font)
      GUICtrlSetColor(-1, 0x008fd7)
      ;~    ----------------------------------------------------------
      GUICtrlSetData($A,$Key_qs[2][1])
      GUICtrlSetData($B,$Key_qs[3][1])
      GUICtrlSetData($C,$Key_qs[4][1])

      If $Key_qs[5][1] = "-" Then
        GUICtrlSetState($Dopt,$GUI_HIDE)
        GUICtrlSetData($D,"")
      Else
         GUICtrlSetState($Dopt,$GUI_SHOW)
         GUICtrlSetData($D,$Key_qs[5][1])
      EndIf

   Else
      $Key_ans = IniReadSection($ans_ini, $var_ans[$ip-1])

      If $Key_ans[1][1] = "A" Then
         GUICtrlSetState($Aopt,$GUI_CHECKED)
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $Key_ans[1][1] = "B" Then
         GUICtrlSetState($Bopt,$GUI_CHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $Key_ans[1][1] = "C" Then
         GUICtrlSetState($Copt,$GUI_CHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Dopt,$GUI_UNCHECKED)
      ElseIf $Key_ans[1][1] = "D" Then
         GUICtrlSetState($Dopt,$GUI_CHECKED)
         GUICtrlSetState($Aopt,$GUI_UNCHECKED)
         GUICtrlSetState($Bopt,$GUI_UNCHECKED)
         GUICtrlSetState($Copt,$GUI_UNCHECKED)
      EndIf

      $Key_qs = IniReadSection($File, $var_qs[$ip-1])
      $QSTN = GUICtrlCreateLabel($Key_qs[1][1] ,75 ,64,500,45) ; Question text
      GUICtrlSetFont(-1, 12,650, $font)
      GUICtrlSetColor(-1, 0x008fd7)
      ;~    ----------------------------------------------------------
      GUICtrlSetData($A,$Key_qs[2][1])
      GUICtrlSetData($B,$Key_qs[3][1])
      GUICtrlSetData($C,$Key_qs[4][1])

      If $Key_qs[5][1] = "-" Then
        GUICtrlSetState($Dopt,$GUI_HIDE)
        GUICtrlSetData($D,"")
      Else
         GUICtrlSetState($Dopt,$GUI_SHOW)
         GUICtrlSetData($D,$Key_qs[5][1])
      EndIf

   EndIf




EndFunc


Func DetectChkOpt()
   Select
   Case GUICtrlRead($Aopt) = 1
      $data_ans = "ans[" & $in & "]=A"
      IniWriteSection($ans_ini, $in, $data_ans)
      ;MsgBox(0,""," $i=" & $i)
      ;GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NXData()
;~    =======================
   Case GUICtrlRead($Bopt) = 1
      $data_ans = "ans[" & $in & "]=B"
      IniWriteSection($ans_ini, $in, $data_ans)
      ;MsgBox(0,""," $i=" & $i)
      ;GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NXData()
;~    =======================
   Case GUICtrlRead($Copt) = 1
      $data_ans = "ans[" & $in & "]=C"
      IniWriteSection($ans_ini, $in, $data_ans)
      ;MsgBox(0,""," $i=" & $i)
      ;GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NXData()
;~    =======================
   Case GUICtrlRead($Dopt) = 1
      $data_ans = "ans[" & $in & "]=D"
      IniWriteSection($ans_ini, $in, $data_ans)
      ;MsgBox(0,""," $i=" & $i)
      ;GUICtrlSetData($QSTN,"")
      GUICtrlSetState($prev,$GUI_ENABLE)
      NXData()
;~    =======================
   Case Else
      MsgBox(0,"attention","please choose one of these options")
   EndSelect
EndFunc



Func Result()
   Local $rslt = 0
   $var_qs = IniReadSectionNames($File)
   $var_ans = IniReadSectionNames($ans_ini)
;~ ---------------------------------------------------
   For $l = 1 To $var_ans[0]
      $Key_qs = IniReadSection($File, $var_qs[$l])
      $Key_ans = IniReadSection($ans_ini, $var_ans[$l])
      If $Key_ans[1][1] = $Key_qs[6][1] Then
         $rslt = $rslt + 1
      EndIf
   Next
;~ ---------------------------------------------------
   GUICtrlSetData($QSTN,$Key_qs[1][1])
   ;MsgBox(0,"",Ubound($ansr) & "   " & $ai)
   MsgBox(0,"Result", $rslt & " of " & $var_qs[0] )

EndFunc

Edited by Soledad

Share this post


Link to post
Share on other sites
Soledad

the new mod is getting the number $in by checking the question txt and search in ini file and stringsplite the number 

 

according to this I mod the questions ini file is DB.ini

 

[1]
QS[1]=What is the biggest planet in our solar system?
ans1[1]=Earth
ans2[1]=Jupiter
ans3[1]=Pluto
ans4[1]=-
true = B
img = 
[2]
QS[2]=What is the name of the element with the chemical symbol ‘He’?
ans1[2]=Helium
ans2[2]=Hydrogen
ans3[2]=Oxygen
ans4[2]=nitrogen
true = A
img = 
[3]
QS[3]=How many bones do sharks have in their bodies?
ans1[3]=20
ans2[3]=50
ans3[3]=0
ans4[3]=10
true = C
img =

 

Edited by Soledad

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • Albertxu
      By Albertxu
      I want to save some tests (about one thousand tests totally) from a quiz website to a text file. 
      The test page is a simple one, it contains:
      1) The questions; they are inside the <p class="qw">...</p>
      2) 5 choices; they are radio buttons id ="a1", "b1" ...
      When I click a radio for a choice, if correct, the background of it will turn green, if wrong, it will turn red, and the correct answer will turn green. What I need to get is the correct answer. 
      So when I click an answer, no matter right or wrong, the test will automatically go to the next question in about 3 or 4 seconds (I don't know exactly how many seconds). 
      So what I want to save is: 
      Questions
      choice 1;
      choice 2;
      choice 3;
      choice 4;
      choice 5;
      correct answer
      Then next question...
      I have limited knowledge of AutoIt, I have check the IE UDFs, but I don't know where to start. Especially I don't know how to do since the test will to go next item automatically. 
      Please give me some hints. Thank you very much.
×