Probleme mit Taschenrechner! bitte helfen

  • Hey,
    ihc habe mir mal selber einen Taschenrechner geschrieben. Nur leider kenne ich mich nicht so gut mit den GUI-Funktionen aus. Mein Rechner soll zwei Inputboxen haben, wo man die Zahlen eingibt, eine Listbox, wo man die Rechenart aussucht, und einen Gleich-Button. Wenn man auf den Button drückt, soll eine Funktion gestartet werden. Nur leider komm ich da garnicht weiter. So hab ihc angefangen:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    dim $listbox
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 77, 192, 124)
    $Input1 = GUICtrlCreateInput("Zahl1", 24, 24, 153, 21)
    $Listbox = GUICtrlCreateList("", 216, 24, 97, 19)
    $Input2 = GUICtrlCreateInput("Zahl2", 336, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
    $listbox=GUICtrlSetData($listbox, "+|-|/|*")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    _berechnen()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _berechnen()
    GuiCtrlRead( $Listbox)
    GuiCtrlRead( $input1)
    GuiCtrlRead( $input2)
    $erg= $Input1+$Input2
    Msgbox( 0, "", $erg)

    [/autoit]

    Sry, falls ich nur blödsinn zusammengeschrieben habe..

    EDIT: DAS PROBLEM ist, dass als Ergebnis immer 8 rauskommt-

  • du musst vor GuiCtrlRead($Input1) zb $ReadInput1 schreiben

    [autoit]

    $readInput1 = Guictrlread($Input1)

    [/autoit]


    das vor jedem guictrlread und bei $erg musste halt diese Varialben eintragen;)

    $input1 ist ja nicht der inhalt des inputs...

  • Hallo.

    Du darfst in $listbox nicht noch das Ergebnis von GuiCtrlSetData speichern, weil du dann das Handle deiner Listbox überschreibst und somit mit ihr nichts mehr machen kannst.

    Den Rest würde ich so machen:

    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    Dim $listbox
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 77, 192, 124)
    $Input1 = GUICtrlCreateInput("10", 24, 24, 153, 21)
    $listbox = GUICtrlCreateList("", 216, 24, 97, 19)
    GUICtrlSetData(-1, "+|-|/|*")
    $Input2 = GUICtrlCreateInput("10", 336, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    _berechnen()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _berechnen()
    $Art = GUICtrlRead($listbox)
    If $Art <> "" Then
    $Zahl1 = GUICtrlRead($Input1)
    $Zahl2 = GUICtrlRead($Input2)
    $erg = Execute($Input1 & $Art & $Input2)
    MsgBox(0, "", $erg)
    EndIf
    EndFunc ;==>_berechnen

    [/autoit]

    Jaja, Moo does the Cow!

    • Offizieller Beitrag
    Spoiler anzeigen
    [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    dim $listbox
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 77, 192, 124)
    $Input1 = GUICtrlCreateInput("Zahl1", 24, 24, 153, 21)
    $Listbox = GUICtrlCreateList("", 216, 24, 97, 19)
    $Input2 = GUICtrlCreateInput("Zahl2", 336, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
    GUICtrlSetData($listbox, "+|-|/|*","+")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    _berechnen()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _berechnen()
    $Op = GuiCtrlRead( $Listbox)
    $Zahl1= GuiCtrlRead( $input1)
    $Zahl2= GuiCtrlRead( $input2)
    $erg1=$Zahl1&$Op&$Zahl2
    $erg= Execute($Zahl1&$Op&$Zahl2)
    MsgBox(0,$Op,$erg)
    EndFunc

    [/autoit]
  • Hey,
    leider hat kein Skript von euch funktioniert. Habt ihr sie denn nicht selber probiert? Aber egal. Sie haben mir zwar geholfen, und ich habe ein eigenes Skript geschrieben. Es funzt aber immernoch nicht einwandfrei.

    [autoit]

    Func _berechnen()
    $Art = GUICtrlRead($listbox)
    $Zahl1= GuiCtrlRead($Input1)
    $Zahl2= GuiCtrlRead($Input2)
    If $Art= "+" Then
    $erg=$Zahl1+$Zahl2
    Msgbox(0,"",$erg)
    EndIf
    If $Art= "*" Then
    $erg1=$Zahl1*$Zahl2
    Msgbox(0,"",$erg1)
    EndIf
    EndFunc ;==>_berechnen

    [/autoit]

    ES werden immer 2 MsgBoxn gezeigt, eine mit der Summe und danach eine mit dem Produkt. Wo liegt das Problem?

    • Offizieller Beitrag

    Bei mir auch. 8o

    @dominic208 bei deiner Func _berechnen kommen keine 2 MsgBox´en.

    Zeig mal den Code, so wie du Ihn jetzt hast. Komplett.

  • [autoit]

    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <WindowsConstants.au3>
    dim $listbox
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 77, 192, 124)
    $Input1 = GUICtrlCreateInput("Zahl1", 24, 24, 153, 21)
    $Listbox = GUICtrlCreateList("", 216, 24, 97, 19)
    $Input2 = GUICtrlCreateInput("Zahl2", 336, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
    $listbox=GUICtrlSetData($Listbox, "+|-|/|*")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    _berechnen()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _berechnen()
    $Art = GUICtrlRead($listbox)
    $Zahl1= GuiCtrlRead($Input1)
    $Zahl2= GuiCtrlRead($Input2)
    If $Art= "+" Then
    $erg=$Zahl1+$Zahl2
    Msgbox(0,"",$erg)
    EndIf
    If $Art= "*" Then
    $erg1=$Zahl1*$Zahl2
    Msgbox(0,"",$erg1)
    EndIf
    EndFunc ;==>_berechnen

    [/autoit]

    EDIT: Lenny, bei deinem skript kommt keine msgbox raus. Raupi, bei deinem Skript kann ich nur addieren..

  • Bei meinem Script kommt nur keine MsgBox, wenn du keine Rechenart auswählst. Du musst in die Liste klicken, damit die rechenart, die aktuell angezeigt wird, auch verwendet werden kann.
    Das hat raupi in seinem Script ein bisschen schlauer gemacht. Bei ihm ist das "+" schon zu beginn ausgewählt, was auch erklärt, dass du in Raupi's Script zumindest "+" rechnen kannst.

    Dein Problem ist, dass du zwar in der ListBox rumscrollst, aber letzendlich garkeine Rechenart auswählst.

    Jaja, Moo does the Cow!

  • Äh, wie Raupi schon sagte? Mit Raupis oder meinem Script:

    Zitat

    @dominic208 bei deiner Func _berechnen kommen keine 2 MsgBox´en.

    Jaja, Moo does the Cow!

    Einmal editiert, zuletzt von Lenny (4. Januar 2010 um 13:47)

  • und warum kommen bei meinem skript immer 2 msgboxen??

    Weil du die Variable $listbox, welche einst die control ID beinhaltete, in Zeile 13 überschreibst.
    Und bevor du fragst: Du musst dann erst IN die Listbox drücken (blau markiert), bevor er dir ein ergebnis ausspuckt, ansonsten ist ja GUICtrlRead($listbox) = ""

    • Offizieller Beitrag
    Zitat

    EDIT: Lenny, bei deinem skript kommt keine msgbox raus. Raupi, bei deinem Skript kann ich nur addieren..


    Man sollte schon Wissen wie eine List funktioniert, bevor man behauptet die Scipte funktionieren nicht.

    Ich denke GUICtrlCreateList ist keine gute Wahl, benutze doch ein GUICtrlCreateCombo.

    Spoiler anzeigen
    [autoit]

    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Form1", 633, 77, 192, 124)
    $Input1 = GUICtrlCreateInput("10", 24, 24, 153, 21)
    $Combo = GUICtrlCreateCombo("", 216, 24, 97, 19, $CBS_DROPDOWNLIST)
    $Input2 = GUICtrlCreateInput("10", 336, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
    GUICtrlSetData($Combo, "+|-|/|*", "+")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    _berechnen()
    Case $GUI_EVENT_CLOSE
    Exit

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

    EndSwitch
    WEnd

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

    Func _berechnen()
    $Op = GUICtrlRead($Combo)
    $Zahl1 = GUICtrlRead($Input1)
    $Zahl2 = GUICtrlRead($Input2)
    $erg = Execute($Zahl1 & $Op & $Zahl2)
    MsgBox(0, $Op, $erg)
    EndFunc ;==>_berechnen

    [/autoit]
  • Hi, ein Beispiel.

    [autoit]


    #include <ComboConstants.au3>
    #include <GUIConstantsEx.au3>
    $Form1 = GUICreate("Form1", 633, 77, 192, 124)
    $Input1 = GUICtrlCreateInput("25", 24, 24, 153, 21)
    $Combo = GUICtrlCreateCombo("", 216, 24, 97, 19, $CBS_DROPDOWNLIST)
    GUICtrlSetData(-1, "+|-|/|*", "+")
    $Input2 = GUICtrlCreateInput("25", 336, 24, 129, 21)
    $Button1 = GUICtrlCreateButton("=", 488, 24, 49, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $Button1
    MsgBox(0, "", Execute(GUICtrlRead($Input1) & GUICtrlRead($Combo) & GUICtrlRead($Input2)))
    Case $GUI_EVENT_CLOSE
    Exit
    EndSwitch
    WEnd
    ; Ende

    [/autoit]


    Viel Erfolg! 8)