Taschenrechner

  • "Mit der Möglichkeit der Tastatureingabe taucht das Problem Dezimalpunkt und Komma auf (2,5 + 3,5 = 2) !"

    Hi Simon !
    Ich dachte, das Du ganz bewusst die Mauseingabe gewählt hast. Bei der Eingabe von Komma statt Punkt bekommt man ein falsches Ergebnis. Das ist auch logisch, denn der normale Nutzer gibt ja ein Komma ein.Schau Dir mal "StringReplace" an.

    Schöne Idee - Ein kleiner Rechner mit grossem Display der den Monitor nicht verdeckt ! :thumbup:

    [autoit]


    $Komma = "3,5"
    $text = StringReplace($Komma, ",", ".")
    MsgBox(0, "Siehe von Komma nach Punkt ! ", $text)

    [/autoit]

    Edit: Beispiel angepasst !

  • Hi Simon,

    ich habe Dein Script etwas angepasst. Ich hoffe, es gefällt Dir ? ;)

    Spoiler anzeigen
    [autoit]


    ; SB_Taschenrechner_by_Simon
    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <String.au3>

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

    HotKeySet("{F1}", "_help")

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

    GUICreate("SB Taschenrechner", 320, 140, Default, Default, $WS_POPUP + $WS_BORDER)
    GUISetBkColor(0xCDAD00)
    $inp = GUICtrlCreateInput("", 10, 10, 300, 20)
    GUICtrlSetState(-1, $GUI_DISABLE)
    $1 = GUICtrlCreateButton("1", 10, 40, 30, 30)
    $2 = GUICtrlCreateButton("2", 40, 40, 30, 30)
    $3 = GUICtrlCreateButton("3", 70, 40, 30, 30)
    $4 = GUICtrlCreateButton("4", 100, 40, 30, 30)
    $5 = GUICtrlCreateButton("5", 130, 40, 30, 30)
    $6 = GUICtrlCreateButton("6", 160, 40, 30, 30)
    $7 = GUICtrlCreateButton("7", 190, 40, 30, 30)
    $8 = GUICtrlCreateButton("8", 220, 40, 30, 30)
    $9 = GUICtrlCreateButton("9", 250, 40, 30, 30)
    $0 = GUICtrlCreateButton("0", 280, 40, 30, 30)
    $plus = GUICtrlCreateButton(" + ", 10, 70, 30, 30)
    $minus = GUICtrlCreateButton(" - ", 40, 70, 30, 30)
    GUICtrlSetFont(-1, 15)
    $div = GUICtrlCreateButton(" / ", 70, 70, 30, 30)
    $mult = GUICtrlCreateButton(" * ", 100, 70, 30, 30)
    GUICtrlSetFont(-1, 15)
    $kl = GUICtrlCreateButton("(", 130, 70, 30, 30)
    $lk = GUICtrlCreateButton(")", 160, 70, 30, 30)
    $kom = GUICtrlCreateButton(",", 190, 70, 30, 30) ;< ! Angepasst, da nur noch mit "Komma" gerechnet wird !
    GUICtrlSetFont(-1, 15)
    $z = GUICtrlCreateButton("C", 220, 70, 30, 30)
    GUICtrlSetTip(-1, " Neue Rechnung ") ;< Angepasst
    $ex = GUICtrlCreateButton("X", 250, 70, 30, 30)
    GUICtrlSetTip(-1, " Den Rechner beenden ") ;< Angepasst
    $erg = GUICtrlCreateButton("=", 280, 70, 30, 30)
    $o = GUICtrlCreateRadio(" mit Tastatureingabe ", 10, 110) ;< Angepasst
    $m = GUICtrlCreateRadio(" ohne Tastatureingabe ", 150, 110) ;< Angepasst
    GUICtrlSetState(-1, $GUI_CHECKED)

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case - 3
    Exit
    Case $ex
    Exit
    Case $z
    GUICtrlSetData($inp, "")
    Case $1
    GUICtrlSetData($inp, GUICtrlRead($inp) & "1")
    Case $2
    GUICtrlSetData($inp, GUICtrlRead($inp) & "2")
    Case $3
    GUICtrlSetData($inp, GUICtrlRead($inp) & "3")
    Case $4
    GUICtrlSetData($inp, GUICtrlRead($inp) & "4")
    Case $5
    GUICtrlSetData($inp, GUICtrlRead($inp) & "5")
    Case $6
    GUICtrlSetData($inp, GUICtrlRead($inp) & "6")
    Case $7
    GUICtrlSetData($inp, GUICtrlRead($inp) & "7")
    Case $8
    GUICtrlSetData($inp, GUICtrlRead($inp) & "8")
    Case $9
    GUICtrlSetData($inp, GUICtrlRead($inp) & "9")
    Case $plus
    GUICtrlSetData($inp, GUICtrlRead($inp) & "+")
    Case $minus
    GUICtrlSetData($inp, GUICtrlRead($inp) & "-")
    Case $div
    GUICtrlSetData($inp, GUICtrlRead($inp) & "/")
    Case $mult
    GUICtrlSetData($inp, GUICtrlRead($inp) & "*")
    Case $kl
    GUICtrlSetData($inp, GUICtrlRead($inp) & "(")
    Case $lk
    GUICtrlSetData($inp, GUICtrlRead($inp) & ")")
    Case $erg
    $read = GUICtrlRead($inp)
    If $read = "" Then
    MsgBox(16, "Fehler", "Sie müssen etwas eingeben")
    Else
    $ergebnis = _StringAddThousandsSep(StringReplace(Execute(StringReplace($read, ",", ".")), ".", ","))

    ; ### Ablauf von Innen nach Aussen ###
    ; Erstest StringReplace > wandeln der eingegebenen Kommata von $read in Dezimalpunkte
    ; Execute > ausführen der Berechnung
    ; Zweites StringReplace > wandeln der Dezimalpunkte der Berechnung von $read ausgeben in Kommata
    ; _StringAddThousandsSep > Ausgabe mit Tausenderpunkt
    ; ### $ergebnis = _StringAddThousandsSep(StringReplace(Execute(StringReplace($read, ",", ".")), ".", ",")) ###

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

    MsgBox(0, "Dein Ergebnis", $ergebnis)
    $bos = MsgBox(4, "Kopieren", "Willst du das Eregebnis Kopieren?")
    If $bos = 6 Then
    ClipPut($read)
    EndIf
    EndIf
    Case $0
    GUICtrlSetData($inp, GUICtrlRead($inp) & "0")
    Case $kom
    GUICtrlSetData($inp, GUICtrlRead($inp) & ".")
    Case $m
    GUICtrlSetState($inp, $GUI_DISABLE)
    Case $o
    GUICtrlSetState($inp, $GUI_ENABLE)
    EndSwitch
    WEnd

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

    Func _help()
    MsgBox(0, "Hilfe", "Hier sind alle zeichen erklärt" & @CRLF & @CRLF & " - 1 = 1" & @CRLF & " - 2 = 2" & @CRLF & " - 3 = 3" & @CRLF & " - 4 = 4" & @CRLF & " - 5 = 5" & @CRLF & " - 6 = 6" & @CRLF & " - 7 = 7" & @CRLF & " - 8 = 8" & @CRLF & " - 9 = 9" & @CRLF & " - + = +" & @CRLF & " - - = -" & @CRLF & " - / = geteilt" & @CRLF & " - * = mal" & @CRLF & " - ( = klammer auf" & @CRLF & " - ) = Klammer zu" & @CRLF & " - . = Komma" & @CRLF & " - del = Löschen aller Zeichen" & " - X = Exit" & @CRLF & " - = = Ergebnis ausrechnen" & @CRLF & "Ich hoffe ihr kennt euch jetzt mit der Button belegung aus !!!" & @TAB & @TAB & @TAB & @TAB)
    EndFunc ;==>_help

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

    ; Ende

    [/autoit]


    Edit: Tausenderpunkt hinzugefügt. :)

  • klar

    [autoit]

    $inp = InputBox("","")
    $erg = Execute($inp)
    Msgbox(0,"",$erg)

    [/autoit]
  • Hi Simon,

    [autoit]


    ; SB_Taschenrechner_by_Simon
    #include <WindowsConstants.au3>

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

    Dim $arZiffern[10]

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

    GUICreate("SB Taschenrechner", 320, 140, Default, Default, $WS_POPUP + $WS_BORDER)
    GUISetBkColor(0xCDAD00)

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

    For $i = 0 To 9
    $arZiffern[$i] = GUICtrlCreateButton($i, 10 + $i * 30, 40, 30, 30)
    Next

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case - 3
    Exit
    EndSwitch
    WEnd

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

    ; Ende

    [/autoit]