Werde ich mal umsetzten aber was meinst du mit den dezimalstellen?
Taschenrechner
-
simon -
16. Mai 2009 um 10:21
-
-
Dezimalstellen sind die Zahlen nach dem Komma!
-
"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 !
[autoit]
[/autoit]
$Komma = "3,5"
$text = StringReplace($Komma, ",", ".")
MsgBox(0, "Siehe von Komma nach Punkt ! ", $text)Edit: Beispiel angepasst !
-
Danke ich werde mal versuchen es umzusetzten
-
Hi Simon,
ich habe Dein Script etwas angepasst. Ich hoffe, es gefällt Dir ?
Spoiler anzeigen
[autoit]
[/autoit] [autoit][/autoit] [autoit]
; SB_Taschenrechner_by_Simon
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <String.au3>HotKeySet("{F1}", "_help")
[/autoit] [autoit][/autoit] [autoit]GUICreate("SB Taschenrechner", 320, 140, Default, Default, $WS_POPUP + $WS_BORDER)
[/autoit] [autoit][/autoit] [autoit]
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)GUISetState()
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
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, ",", ".")), ".", ",")) ###MsgBox(0, "Dein Ergebnis", $ergebnis)
[/autoit] [autoit][/autoit] [autoit]
$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
WEndFunc _help()
[/autoit] [autoit][/autoit] [autoit]
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; Ende
[/autoit]
Edit: Tausenderpunkt hinzugefügt. -
Zitat
Ich hoffe, es gefällt Dir ?
Ja danke habs im ersten Post upgedated
-
Mal so am Rande,
gibt es ein wirklich simples Script für einen Taschenrechner?
ich würde ganz gern einen kleinen in HastyNotes einfügen -
klar
[autoit]$inp = InputBox("","")
[/autoit]
$erg = Execute($inp)
Msgbox(0,"",$erg) -
Hi Simon,
[autoit]
[/autoit][autoit][/autoit][autoit]
; SB_Taschenrechner_by_Simon
#include <WindowsConstants.au3>Dim $arZiffern[10]
[/autoit][autoit][/autoit][autoit]GUICreate("SB Taschenrechner", 320, 140, Default, Default, $WS_POPUP + $WS_BORDER)
[/autoit][autoit][/autoit][autoit]
GUISetBkColor(0xCDAD00)For $i = 0 To 9
[/autoit][autoit][/autoit][autoit]
$arZiffern[$i] = GUICtrlCreateButton($i, 10 + $i * 30, 40, 30, 30)
NextGUISetState()
[/autoit][autoit][/autoit][autoit]While 1
[/autoit][autoit][/autoit][autoit]
Switch GUIGetMsg()
Case - 3
Exit
EndSwitch
WEnd; Ende
[/autoit] -
- Offizieller Beitrag
Mal so am Rande,
gibt es ein wirklich simples Script für einen Taschenrechner?
ich würde ganz gern einen kleinen in HastyNotes einfügenWie wär's mit:
[autoit]ShellExecute("calc.exe")
[/autoit] -