MiniRechner (Extended, viele Funktionen)

  • Ich habe einen kleinen Taschenrechner mit schöner und übersichtlicher GUI, einfacher Handhabung und recht vielen Befehlen programmiert.

    [Blockierte Grafik: http://img10.myimg.de/background94c28.jpg]

    #Features:

    - Per GUI Tasten, Befehle, Zahlen etc eingebbar.
    - Standardbefehle wie *(Multiplizieren), /(Dividieren), +(Addieren), -(Subtrahieren)
    - Sinus (nur 1 Sin pro Eingabe möglich), Cosinus, Tangens
    - Wurzelrechnen (bisher nur Quadratwurzeln)
    - PI (rechnet bis 14 Nachkommazahlen)
    - Hochzahlen (²und³ einzeln anklickbar für schnelle Nutzung + ^x)
    - Delete Funktion und Clear Funktion
    - Passende Fehlermeldungen
    - ANS Funktion (letztes Ergebnis anzeigen)

    █ = Fehlerhaft oder noch nicht fertiggestellt.
    █ = Teilweise.
    █ = Sollte einwandfrei funktionieren.

    #Updates:
    v. 0.6 Changelog:- Fehler beim Errechnen von ^2 uns ^3 wurde behoben.
    _....

    #Script: (Bilder von Anhang benötigt. Ansonsten funktioniert es nicht.)

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <WindowsConstants.au3>
    #include <StaticConstants.au3>
    #include <Math.au3>

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

    Global $funcnum = -1, $blockunten[5][4], $blockoben[6][2]
    Global $ans = "error"
    Global $checklabel = 0
    Global $pi = "3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117067982148086513282306647093844609550582231725359408128481117450284102701938521105559644622948954930381964428810975665933446128475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530548820466521384146951941511609433057270365759591953092186117381932611793105118548074462379962749567"

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

    Opt("GUIOnEventMode", 1)

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

    $Form2 = GUICreate("Minirechner Extended", 180, 241, 191, 123)
    For $s = 0 To 3
    For $i = 0 To 4
    $funcnum += 1
    $blockunten[$i][$s] = GUICtrlCreatePic("images\buttonblank.gif", 4 + $i * 36, 96 + $s * 30, 30, 24)
    GUICtrlSetOnEvent($blockunten[$i][$s], "_pic"&$funcnum)
    Next
    Next
    For $s = 0 To 1
    For $i = 0 To 5
    $funcnum += 1
    $blockoben[$i][$s] = GUICtrlCreatePic("images\background.jpg", 4 + $i + $i * 30, 42 + $s * 42 - $s * 17, 26, 22)
    GUICtrlSetOnEvent($blockoben[$i][$s], "_pic"&$funcnum)
    Next
    Next
    $Pic1 = GUICtrlCreatePic("images\background.jpg", 0, 0, 180, 240)
    $label = GUICtrlCreateLabel("MiniRechner Extended v0.6", 4, 214, 172, 17, $SS_Center)
    GUICtrlSetBkColor($label,$GUI_BKCOLOR_TRANSPARENT )
    GUICtrlSetColor(-1, 0x4F4C62)
    $display = GUICtrlCreateInput("", 6, 10, 169, 16, -1, 0)
    GUICtrlSetFont(-1, 10, 800, 0, "Verdana")
    GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1,0x000000 )
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func _Checklabel()
    If $checklabel = 1 Then
    GUICtrlSetData($label, "MiniRechner Extended v0.6")
    GUICtrlSetColor($label, 0x4F4C62)
    $checklabel = 0
    EndIf
    EndFunc

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

    Func _Exit()
    Exit
    EndFunc

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

    Func _pic0() ;7
    GUICtrlSetData($display, GUICtrlRead($display) & "7")
    EndFunc
    Func _pic1() ;8

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

    GUICtrlSetData($display, GUICtrlRead($display) & "8")
    EndFunc
    Func _pic2() ;9

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

    GUICtrlSetData($display, GUICtrlRead($display) & "9")
    EndFunc
    Func _pic3() ;DEL
    GUICtrlSetData($display, StringTrimRight(GUICtrlRead($display), 1))
    EndFunc
    Func _pic4() ;AC
    GUICtrlSetData($display, "")
    _Checklabel()
    EndFunc
    Func _pic5() ;4

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

    GUICtrlSetData($display, GUICtrlRead($display) & "4")
    EndFunc
    Func _pic6() ;5

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

    GUICtrlSetData($display, GUICtrlRead($display) & "5")
    EndFunc
    Func _pic7() ;6

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

    GUICtrlSetData($display, GUICtrlRead($display) & "6")
    EndFunc
    Func _pic8() ;* (Mal)

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

    GUICtrlSetData($display, GUICtrlRead($display) & "*")
    EndFunc
    Func _pic9() ;/ (Geteilt)

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

    GUICtrlSetData($display, GUICtrlRead($display) & "/")
    EndFunc
    Func _pic10() ;1

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

    GUICtrlSetData($display, GUICtrlRead($display) & "1")
    EndFunc
    Func _pic11() ;2

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

    GUICtrlSetData($display, GUICtrlRead($display) & "2")
    EndFunc
    Func _pic12() ;3

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

    GUICtrlSetData($display, GUICtrlRead($display) & "3")
    EndFunc
    Func _pic13() ;+ (Plus)

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

    GUICtrlSetData($display, GUICtrlRead($display) & "+")
    EndFunc
    Func _pic14() ;- (Minus)

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

    GUICtrlSetData($display, GUICtrlRead($display) & "-")
    EndFunc
    Func _pic15() ;0 (Null)

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

    GUICtrlSetData($display, GUICtrlRead($display) & "0")
    EndFunc
    Func _pic16() ;. (Punkt)

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

    GUICtrlSetData($display, GUICtrlRead($display) & ".")
    EndFunc
    Func _pic17() ;Leeres Feld
    EndFunc
    Func _pic18() ;ANS (letztes Ergebnis)
    If $ans = "error" Then
    GUICtrlSetData($label, "Script Error")
    GUICtrlSetColor($label, 0xFFFF00)
    $checklabel = 1
    Else
    GUICtrlSetData($display, $ans)
    EndIf
    EndFunc
    Func _pic19() ;= (Istgleich)
    $checkfirst = GUICtrlRead($display)
    If StringInStr($checkfirst, "Sin", 0, 2) Then
    GUICtrlSetData($label, "Maximal 1 Sin-Funktion möglich.")
    GUICtrlSetColor($label, 0xFFFF00)
    $checklabel = 1
    ElseIf StringInStr($checkfirst, "Cos", 0, 2) Then
    GUICtrlSetData($label, "Maximal 1 Cos-Funktion möglich.")
    GUICtrlSetColor($label, 0xFFFF00)
    $checklabel = 1
    ElseIf StringInStr($checkfirst, "Tan", 0, 2) Then
    GUICtrlSetData($label, "Maximal 1 Tan-Funktion möglich.")
    GUICtrlSetColor($label, 0xFFFF00)
    $checklabel = 1
    ElseIf StringInStr($checkfirst, "Sin") Then
    _sinus()
    ElseIf StringInStr($checkfirst, "Cos") Then
    _cosinus()
    ElseIf StringInStr($checkfirst, "Tan") Then
    _tangens()
    ElseIf StringInStr($checkfirst, "Pi") Then
    $pireplace = StringReplace($checkfirst, "Pi", $pi)
    $ans = Execute($pireplace)
    GUICtrlSetData($display, $ans)
    ElseIf StringInStr($checkfirst, "W(") Then
    $wreplace = StringReplace($checkfirst, "W(", "Sqrt(")
    $ans = Execute($wreplace)
    GUICtrlSetData($display, $ans)
    Else
    $ans = Execute(GUICtrlRead($display))
    GUICtrlSetData($display, $ans)
    EndIf
    EndFunc

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

    Func _sinus()
    $checkfirst = GUICtrlRead($display)
    $sinuscheck = StringSplit($checkfirst, "Sin(", 1)

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

    $i = UBound($sinuscheck, 1) - 1
    $sinuscheck2 = StringSplit($sinuscheck[$i], ")", 1)

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

    $s = 1
    $sinradian = _Radian($sinuscheck2[$s])
    $preergebnis = StringSplit($checkfirst, $sinuscheck2[$s], 1)

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

    $ergebnis = $preergebnis[1]&$sinradian&$preergebnis[2]
    $ans = Execute($ergebnis)
    GUICtrlSetData($display, $ans)
    EndFunc

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

    Func _cosinus()
    $checkfirst = GUICtrlRead($display)
    $coscheck = StringSplit($checkfirst, "Cos(", 1)

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

    $i = UBound($coscheck, 1) - 1
    $coscheck2 = StringSplit($coscheck[$i], ")", 1)

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

    $s = 1
    $cosradian = _Radian($coscheck2[$s])
    $precosergebnis = StringSplit($checkfirst, $coscheck2[$s], 1)

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

    $cosergebnis = $precosergebnis[1]&$cosradian&$precosergebnis[2]
    $ans = Execute($cosergebnis)
    GUICtrlSetData($display, $ans)
    EndFunc

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

    Func _tangens()
    $checkfirst = GUICtrlRead($display)
    $tancheck = StringSplit($checkfirst, "Tan(", 1)

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

    $i = UBound($tancheck, 1) - 1
    $tancheck2 = StringSplit($tancheck[$i], ")", 1)

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

    $s = 1
    $tanradian = _Radian($tancheck2[$s])
    $pretanergebnis = StringSplit($checkfirst, $tancheck2[$s], 1)

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

    $tanergebnis = $pretanergebnis[1]&$tanradian&$pretanergebnis[2]
    $ans = Execute($tanergebnis)
    GUICtrlSetData($display, $ans)
    EndFunc
    Func _pic20() ;Sinus
    GUICtrlSetData($display, GUICtrlRead($display) & "Sin(")
    EndFunc
    Func _pic21() ;Cosinus
    GUICtrlSetData($display, GUICtrlRead($display) & "Cos(")
    EndFunc
    Func _pic22() ;Tangens
    GUICtrlSetData($display, GUICtrlRead($display) & "Tan(")
    EndFunc
    Func _pic23() ;(
    GUICtrlSetData($display, GUICtrlRead($display) & "(")
    EndFunc
    Func _pic24() ;)
    GUICtrlSetData($display, GUICtrlRead($display) & ")")
    EndFunc
    Func _pic25() ;PI
    GUICtrlSetData($display, GUICtrlRead($display) & "PI")
    EndFunc
    Func _pic26() ;Wurzel
    GUICtrlSetData($display, GUICtrlRead($display) & "W(")
    EndFunc
    Func _pic27() ;xWurzel
    GUICtrlSetData($display, GUICtrlRead($display) & "")
    MsgBox(0, "Fehler", "Diese Funktion wird bald folgen.")
    EndFunc
    Func _pic28() ;Prozent
    GUICtrlSetData($display, GUICtrlRead($display) & "")
    MsgBox(0, "Fehler", "Diese Funktion wird bald folgen.")
    EndFunc
    Func _pic29() ;^2 (Hoch 2)
    GUICtrlSetData($display, GUICtrlRead($display) & "^2")
    EndFunc
    Func _pic30() ;^3 (Hoch 3)
    GUICtrlSetData($display, GUICtrlRead($display) & "^3")
    EndFunc
    Func _pic31() ;^x (Hoch X)
    GUICtrlSetData($display, GUICtrlRead($display) & "^")
    EndFunc

    [/autoit]



    Ich bräuchte Hilfe bei der Function von Sin, Cos, Tan. Danke schonmal vorab.

    # Zu den Anhängen:
    minirechner.zip:
    Script (.au3 Format) + Bilder

    images.zip:
    Enthält Ordner /images der in das Scriptverzeichnis kopiert werden muss, falls man sich das Script manuell von oben rauskopiert hat.

    5 Mal editiert, zuletzt von Wambo (28. Juni 2008 um 16:04)