Text "$GUI_CHECKED" in Variabel umwandeln

  • Hi Leute

    Ich möchte Konfigurationen als Ini Datei abspeichern und diese beim nächsten Start des Konfigurationsprogramms wieder eintragen.
    Sprich ich möchte, dass die Häkchen immer vorhanden sind, wenn man das Programm startet.

    Das ist der Code:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Anzahl = 5

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Form1", 777, 20*$Anzahl+60, 193, 125)
    $Save = GUICtrlCreateButton("Speichern", 670, 20*$Anzahl+35,80,20)
    $Graphic1 = GUICtrlCreateGraphic(160, 24, 17, 17)
    $Graphic2 = GUICtrlCreateGraphic(192, 24, 17, 17)
    $Graphic3 = GUICtrlCreateGraphic(248, 24, 17, 17)
    $Graphic4 = GUICtrlCreateGraphic(288, 24, 17, 17)
    $Graphic5 = GUICtrlCreateGraphic(328, 24, 17, 17)
    $Graphic6 = GUICtrlCreateGraphic(368, 24, 17, 17)
    $Graphic7 = GUICtrlCreateGraphic(440, 24, 17, 17)
    $Graphic8 = GUICtrlCreateGraphic(480, 24, 17, 17)
    $Graphic9 = GUICtrlCreateGraphic(520, 24, 17, 17)
    $Graphic10 = GUICtrlCreateGraphic(560, 24, 17, 17)
    $Graphic11 = GUICtrlCreateGraphic(632, 24, 17, 17)
    $Graphic12 = GUICtrlCreateGraphic(672, 24, 17, 17)
    $Graphic13 = GUICtrlCreateGraphic(744, 24, 17, 17)
    $Label2 = GUICtrlCreateLabel("Label2", 8, 8, 60, 28)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")

    [/autoit] [autoit][/autoit] [autoit]

    Dim $CheckST[$Anzahl+1], $CheckSC[$Anzahl+1], $CheckAK[$Anzahl+1], $CheckBS[$Anzahl+1], $CheckSP[$Anzahl+1], $CheckLK[$Anzahl+1], $CheckBB[$Anzahl+1], $CheckSK[$Anzahl+1], $CheckRA[$Anzahl+1], $CheckKA[$Anzahl+1], $CheckAG[$Anzahl+1], $RadioO[$Anzahl+1], $RadioD[$Anzahl+1]
    For $i = 1 To $Anzahl ;Create Checkbox
    $Label1 = GUICtrlCreateLabel("Label" & $i, 8, 17+$i*20, 124, 17)

    GUIStartGroup()
    $RadioO[$i] = GUICtrlCreateRadio("", 160, 17+$i*20, 17, 17)
    $RadioD[$i] = GUICtrlCreateRadio("", 192, 17+$i*20, 17, 17)


    $CheckST[$i] = GUICtrlCreateCheckbox("", 248, 17+$i*20, 17, 17)
    GUICtrlSetState($CheckST[$i],IniRead(@ScriptDir & "\temp.ini",$i,"ST",""))
    MsgBox(0,"0",IniRead(@ScriptDir & "\temp.ini",$i,"ST",""))
    $CheckSC[$i] = GUICtrlCreateCheckbox("", 288, 17+$i*20, 17, 17)
    $CheckAK[$i] = GUICtrlCreateCheckbox("", 328, 17+$i*20, 17, 17)
    $CheckBS[$i] = GUICtrlCreateCheckbox("", 368, 17+$i*20, 17, 17)

    $CheckSP[$i] = GUICtrlCreateCheckbox("", 440, 17+$i*20, 17, 17)
    $CheckLK[$i] = GUICtrlCreateCheckbox("", 480, 17+$i*20, 17, 17)
    $CheckBB[$i] = GUICtrlCreateCheckbox("", 520, 17+$i*20, 17, 17)
    $CheckSK[$i] = GUICtrlCreateCheckbox("", 560, 17+$i*20, 17, 17)

    [/autoit] [autoit][/autoit] [autoit]

    $CheckRA[$i] = GUICtrlCreateCheckbox("", 632, 17+$i*20, 17, 17)
    $CheckKA[$i] = GUICtrlCreateCheckbox("", 672, 17+$i*20, 17, 17)

    $CheckAG[$i] = GUICtrlCreateCheckbox("", 744, 17+$i*20, 17, 17)
    Next
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    For $i = 1 To $Anzahl
    Select ;RADIO
    Case $RadioO[$i] And BitAND(GUICtrlRead($RadioO[$i]), $GUI_CHECKED) = $GUI_CHECKED
    GUICtrlSetState($RadioO[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckST[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSC[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckAK[$i],$GUI_CHECKED)
    GUICtrlSetState($CheckBS[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckSP[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckLK[$i],$GUI_CHECKED)
    GUICtrlSetState($CheckBB[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSK[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckRA[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckKA[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckAG[$i],$GUI_UNCHECKED)

    Case $RadioD[$i] And BitAND(GUICtrlRead($RadioD[$i]), $GUI_CHECKED) = $GUI_CHECKED
    GUICtrlSetState($RadioD[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckST[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSC[$i],$GUI_CHECKED)
    GUICtrlSetState($CheckAK[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckBS[$i],$GUI_CHECKED)

    GUICtrlSetState($CheckSP[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckLK[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckBB[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSK[$i],$GUI_CHECKED)

    GUICtrlSetState($CheckRA[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckKA[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckAG[$i],$GUI_UNCHECKED)
    EndSelect
    Next
    If $nMsg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

    If $nMsg = $Save Then ;SAVE
    For $i = 1 To $Anzahl
    If $CheckST[$i] And BitAND(GUICtrlRead($CheckST[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"ST","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"ST","$GUI_UNCHECKED")
    EndIf

    If $CheckSC[$i] And BitAND(GUICtrlRead($CheckSC[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"SC","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"SC","$GUI_UNCHECKED")
    EndIf

    If $CheckAK[$i] And BitAND(GUICtrlRead($CheckAK[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"AK","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"AK","$GUI_UNCHECKED")
    EndIf

    If $CheckBS[$i] And BitAND(GUICtrlRead($CheckBS[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"BS","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"BS","$GUI_UNCHECKED")
    EndIf

    If $CheckSP[$i] And BitAND(GUICtrlRead($CheckSP[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"SP","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"SP","$GUI_UNCHECKED")
    EndIf

    If $CheckLK[$i] And BitAND(GUICtrlRead($CheckLK[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"LK","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"LK","$GUI_UNCHECKED")
    EndIf

    If $CheckBB[$i] And BitAND(GUICtrlRead($CheckBB[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"BB","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"BB","$GUI_UNCHECKED")
    EndIf

    If $CheckSK[$i] And BitAND(GUICtrlRead($CheckSK[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"SK","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"SK","$GUI_UNCHECKED")
    EndIf

    If $CheckRA[$i] And BitAND(GUICtrlRead($CheckRA[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"RA","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"RA","$GUI_UNCHECKED")
    EndIf

    If $CheckKA[$i] And BitAND(GUICtrlRead($CheckKA[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"KA","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"KA","$GUI_UNCHECKED")
    EndIf

    If $CheckAG[$i] And BitAND(GUICtrlRead($CheckAG[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"AG","$GUI_CHECKED")
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"AG","$GUI_UNCHECKED")
    EndIf

    Next
    EndIf
    WEnd

    [/autoit]

    Das Problem liegt hier:

    [autoit]

    $CheckST[$i] = GUICtrlCreateCheckbox("", 248, 17+$i*20, 17, 17)
    GUICtrlSetState($CheckST[$i],IniRead(@ScriptDir & "\temp.ini",$i,"ST",""))
    MsgBox(0,"0",IniRead(@ScriptDir & "\temp.ini",$i,"ST",""))

    [/autoit]

    Der Zustand der Checkbox wird so gespeichert "$GUI_CHECKED" anstatt ohne " ". Dies verursacht, dass die Variabel nur als Text erkennt wird.
    Habt ihr ideen wie ich das ändern kann?

    Einmal editiert, zuletzt von ManuIt (3. Oktober 2008 um 14:29)

    • Offizieller Beitrag

    Hallo

    Ganz einfach ohne Anführungszeichen in die INI schreiben.

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>

    [/autoit] [autoit][/autoit] [autoit]

    $Anzahl = 5

    [/autoit] [autoit][/autoit] [autoit]

    $Form1 = GUICreate("Form1", 777, 20*$Anzahl+60, 193, 125)
    $Save = GUICtrlCreateButton("Speichern", 670, 20*$Anzahl+35,80,20)
    $Graphic1 = GUICtrlCreateGraphic(160, 24, 17, 17)
    $Graphic2 = GUICtrlCreateGraphic(192, 24, 17, 17)
    $Graphic3 = GUICtrlCreateGraphic(248, 24, 17, 17)
    $Graphic4 = GUICtrlCreateGraphic(288, 24, 17, 17)
    $Graphic5 = GUICtrlCreateGraphic(328, 24, 17, 17)
    $Graphic6 = GUICtrlCreateGraphic(368, 24, 17, 17)
    $Graphic7 = GUICtrlCreateGraphic(440, 24, 17, 17)
    $Graphic8 = GUICtrlCreateGraphic(480, 24, 17, 17)
    $Graphic9 = GUICtrlCreateGraphic(520, 24, 17, 17)
    $Graphic10 = GUICtrlCreateGraphic(560, 24, 17, 17)
    $Graphic11 = GUICtrlCreateGraphic(632, 24, 17, 17)
    $Graphic12 = GUICtrlCreateGraphic(672, 24, 17, 17)
    $Graphic13 = GUICtrlCreateGraphic(744, 24, 17, 17)
    $Label2 = GUICtrlCreateLabel("Label2", 8, 8, 60, 28)
    GUICtrlSetFont(-1, 16, 400, 0, "MS Sans Serif")

    [/autoit] [autoit][/autoit] [autoit]

    Dim $CheckST[$Anzahl+1], $CheckSC[$Anzahl+1], $CheckAK[$Anzahl+1], $CheckBS[$Anzahl+1], $CheckSP[$Anzahl+1], $CheckLK[$Anzahl+1], $CheckBB[$Anzahl+1], $CheckSK[$Anzahl+1], $CheckRA[$Anzahl+1], $CheckKA[$Anzahl+1], $CheckAG[$Anzahl+1], $RadioO[$Anzahl+1], $RadioD[$Anzahl+1]
    For $i = 1 To $Anzahl ;Create Checkbox
    $Label1 = GUICtrlCreateLabel("Label" & $i, 8, 17+$i*20, 124, 17)

    GUIStartGroup()
    $RadioO[$i] = GUICtrlCreateRadio("", 160, 17+$i*20, 17, 17)
    $RadioD[$i] = GUICtrlCreateRadio("", 192, 17+$i*20, 17, 17)


    $CheckST[$i] = GUICtrlCreateCheckbox("", 248, 17+$i*20, 17, 17)
    GUICtrlSetState($CheckST[$i],IniRead(@ScriptDir & "\temp.ini",$i,"ST",""))
    $CheckSC[$i] = GUICtrlCreateCheckbox("", 288, 17+$i*20, 17, 17)
    $CheckAK[$i] = GUICtrlCreateCheckbox("", 328, 17+$i*20, 17, 17)
    $CheckBS[$i] = GUICtrlCreateCheckbox("", 368, 17+$i*20, 17, 17)

    $CheckSP[$i] = GUICtrlCreateCheckbox("", 440, 17+$i*20, 17, 17)
    $CheckLK[$i] = GUICtrlCreateCheckbox("", 480, 17+$i*20, 17, 17)
    $CheckBB[$i] = GUICtrlCreateCheckbox("", 520, 17+$i*20, 17, 17)
    $CheckSK[$i] = GUICtrlCreateCheckbox("", 560, 17+$i*20, 17, 17)

    [/autoit] [autoit][/autoit] [autoit]

    $CheckRA[$i] = GUICtrlCreateCheckbox("", 632, 17+$i*20, 17, 17)
    $CheckKA[$i] = GUICtrlCreateCheckbox("", 672, 17+$i*20, 17, 17)

    $CheckAG[$i] = GUICtrlCreateCheckbox("", 744, 17+$i*20, 17, 17)
    Next
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    $nMsg = GUIGetMsg()
    For $i = 1 To $Anzahl
    Select ;RADIO
    Case $RadioO[$i] And BitAND(GUICtrlRead($RadioO[$i]), $GUI_CHECKED) = $GUI_CHECKED
    GUICtrlSetState($RadioO[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckST[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSC[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckAK[$i],$GUI_CHECKED)
    GUICtrlSetState($CheckBS[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckSP[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckLK[$i],$GUI_CHECKED)
    GUICtrlSetState($CheckBB[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSK[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckRA[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckKA[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckAG[$i],$GUI_UNCHECKED)

    Case $RadioD[$i] And BitAND(GUICtrlRead($RadioD[$i]), $GUI_CHECKED) = $GUI_CHECKED
    GUICtrlSetState($RadioD[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckST[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSC[$i],$GUI_CHECKED)
    GUICtrlSetState($CheckAK[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckBS[$i],$GUI_CHECKED)

    GUICtrlSetState($CheckSP[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckLK[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckBB[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckSK[$i],$GUI_CHECKED)

    GUICtrlSetState($CheckRA[$i],$GUI_UNCHECKED)
    GUICtrlSetState($CheckKA[$i],$GUI_UNCHECKED)

    GUICtrlSetState($CheckAG[$i],$GUI_UNCHECKED)
    EndSelect
    Next
    If $nMsg = $GUI_EVENT_CLOSE Then
    Exit
    EndIf

    If $nMsg = $Save Then ;SAVE
    For $i = 1 To $Anzahl
    If $CheckST[$i] And BitAND(GUICtrlRead($CheckST[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"ST",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"ST",$GUI_UNCHECKED)
    EndIf

    If $CheckSC[$i] And BitAND(GUICtrlRead($CheckSC[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"SC",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"SC",$GUI_UNCHECKED)
    EndIf

    If $CheckAK[$i] And BitAND(GUICtrlRead($CheckAK[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"AK",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"AK",$GUI_UNCHECKED)
    EndIf

    If $CheckBS[$i] And BitAND(GUICtrlRead($CheckBS[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"BS",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"BS",$GUI_UNCHECKED)
    EndIf

    If $CheckSP[$i] And BitAND(GUICtrlRead($CheckSP[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"SP",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"SP",$GUI_UNCHECKED)
    EndIf

    If $CheckLK[$i] And BitAND(GUICtrlRead($CheckLK[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"LK",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"LK",$GUI_UNCHECKED)
    EndIf

    If $CheckBB[$i] And BitAND(GUICtrlRead($CheckBB[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"BB",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"BB",$GUI_UNCHECKED)
    EndIf

    If $CheckSK[$i] And BitAND(GUICtrlRead($CheckSK[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"SK",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"SK",$GUI_UNCHECKED)
    EndIf

    If $CheckRA[$i] And BitAND(GUICtrlRead($CheckRA[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"RA",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"RA",$GUI_UNCHECKED)
    EndIf

    If $CheckKA[$i] And BitAND(GUICtrlRead($CheckKA[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"KA",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"KA",$GUI_UNCHECKED)
    EndIf

    If $CheckAG[$i] And BitAND(GUICtrlRead($CheckAG[$i]), $GUI_CHECKED) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\temp.ini",$i,"AG",$GUI_CHECKED)
    Else
    IniWrite(@ScriptDir & "\temp.ini",$i,"AG",$GUI_UNCHECKED)
    EndIf

    Next
    EndIf
    WEnd

    [/autoit]

    Mfg Spider