Inireadsection 2D mit auswahl in gui und berechnung

  • Hallo Leute,

    Ich beschäftige mich letzte Zeit wieder mit Autoit und habe immer eine Lösung gefunden aber nun brauche ich eure Hilfe.

    Wie kriege ich es hin, dass wenn weitere Einträge in der INI vorgenommen werden auch der Wert eingelesen und damit berechnet werden kann?

    Im Moment ist es so, dass der Schlüssel in der Combobox existiert aber ich damit nicht rechnen kann. Ich muss alle Farben mit Case definieren.

    Gibts da eine andere Lösung???

    MfG
    redbull80

    INI Datei

    Spoiler anzeigen

    [Farben]
    blau= 0.1
    gelb= 0.2
    grün= 0.3
    rot = 0.4

    CODE

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <ComboConstants.au3>
    #include <ButtonConstants.au3>
    #include <array.au3>

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

    Global $ini = @ScriptDir & "/beispiel.ini"

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

    GUICreate("Beispiel", 200, 200)
    GUISetState(@SW_SHOW)

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

    $Button1 = GUICtrlCreateButton("Ergebnis:", 50, 130, 100, 50)
    $Farbe = GUICtrlCreateCombo("blau", 50, 50, 75, 20, $CBS_DROPDOWNLIST)

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

    Global $Key = IniReadSection($ini, "Farben")

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

    For $i = 1 To $Key[0][0]
    ConsoleWrite($Key[$i][0] & @CRLF)
    GUICtrlSetData($Farbe, $Key[$i][0])
    GUISetState()
    Next

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

    _ArrayDisplay($Key, "Adresse aufgeteilt")

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

    Func menge()
    $cRead = GUICtrlRead($Farbe)
    $D = 4000

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

    Switch $cRead

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

    Case "blau"
    $C = IniRead($ini, "Farben", "blau", "")
    $Ergebnis = $C * $D
    Case "gelb"
    $C = IniRead($ini, "Farben", "gelb", "")
    $Ergebnis = $C * $D
    Case "grün"
    $C = IniRead($ini, "Farben", "grün", "")
    $Ergebnis = $C * $D
    Case Else
    MsgBox(0, "", "Kann Wert von " & $cRead & " nicht lesen")
    Return 0
    EndSwitch
    ConsoleWrite($cRead & " " & $C & @CRLF)

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

    GUICtrlCreateLabel($Ergebnis, 50, 80, 75, 35)
    $font = "Times New Roman Fett"
    GUICtrlSetFont(-1, 25, -1, -1, $font)

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

    EndFunc ;==>menge

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $Button1
    menge()
    EndSwitch
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]

    Einmal editiert, zuletzt von redbull80 (30. September 2012 um 16:23)

  • mach die Variablen Global und dann in der "Gui-Wend":

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ComboConstants.au3>
    #include <ButtonConstants.au3>
    #include <array.au3>

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

    Global $ini = @ScriptDir & "/beispiel.ini"
    Global $D= 4000, $C

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

    GUICreate("Beispiel", 200, 200)
    Global $Ergebnis = GUICtrlCreateLabel("", 50, 80, 75, 35)
    $font = "Times New Roman Fett"
    GUICtrlSetFont(-1, 25, -1, -1, $font)

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

    GUISetState(@SW_SHOW)

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

    $Button1 = GUICtrlCreateButton("Ergebnis:", 50, 130, 100, 50)
    $Farbe = GUICtrlCreateCombo("blau", 50, 50, 75, 20, $CBS_DROPDOWNLIST)

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

    Global $Key = IniReadSection($ini, "Farben")

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

    For $i = 1 To $Key[0][0]
    ConsoleWrite($Key[$i][0] & @CRLF)
    GUICtrlSetData($Farbe, $Key[$i][0])
    GUISetState()
    Next

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

    ;_ArrayDisplay($Key, "Adresse aufgeteilt")

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

    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $Button1
    ;~ menge()
    Case $Farbe
    $C = IniRead($ini, "Farben", GUICtrlRead($Farbe), "")
    GUICtrlSetData($Ergebnis, $C * $D)
    EndSwitch
    If $msg = $GUI_EVENT_CLOSE Then ExitLoop
    WEnd

    [/autoit]

    So brauchste die Funktion Menge nicht..

    2 Mal editiert, zuletzt von Torni (30. September 2012 um 16:18)