Rechnen mit AutoIt

  • Hallo,


    Ichhabe versucht, in AutoIt eine bestimmte Gleichung einzugeben und dann berechnen zu lassen.

    Das Problem: AutoIt gibt diese dann genau so wieder aus.

    Spoiler anzeigen
    [autoit]


    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)
    $window_TR = GUICreate( "Taschenrechner", 170, 260)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
    GUICtrlCreateLabel("Taschenrechner", 30, 10)

    $inputTR1 = GUICtrlCreateInput("", 10, 10, 110, 30)
    $buttonTRlsg = GUICtrlCreateButton ("=", 10, 220, 30, 30)
    $LabelTR1 = GUICtrlCreateLabel("Ergebnis", 56, 230, 55, 18)
    GUICtrlSetOnEvent($buttonTRlsg, "calc")
    GUISetState(@SW_SHOW, $window_TR)

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

    While 1
    Sleep(1000)
    WEnd
    Func calc()
    $Erg = GUICtrlRead($inputTR1)
    GUICtrlSetData($LabelTR1, $Erg) ; hier zeigt AutoIt exakt die Eingabe an
    EndFunc
    Func Ende()
    Exit
    EndFunc

    [/autoit]


    Dabei wird, wenn man die Gleichung direkt mit in das Prog schreibt, diese auch berechnet.

    Z.B. hier

    Spoiler anzeigen
    [autoit]


    $1 = 1 + 2
    MsgBox(0, "", $1) ;hier berechnet AutoIt das genaue Ergebnis
    exit

    [/autoit]


    Nun war mein Gedanke, dass man ja die Gleichung genau so behandeln lassen könnte wie 1 + 2 im zweiten Beispiel.

    Ist das irgendwie möglich?

    Einmal editiert, zuletzt von jackomo92 (19. September 2011 um 18:17)

  • Die Ursache, dass das Programm nichts berechnet, ist diese: GUICtrlRead() gibt bei Erfolg einen String zurück, der den Text des Inputs enthält.

    Lösung: Du müstest den Text umwandeln lassen, sodass er auch wirklich berechnet wird.

    Das geht so ungefähr:

    [autoit]

    GUICtrlSetData($LabelTR1, Number($Erg))

    [/autoit]

    Habs jetzt nicht getestet, müsste aber funktionieren. ;)

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

  • oder so

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>

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

    Opt("GUIOnEventMode", 1)
    $window_TR = GUICreate( "Taschenrechner", 170, 260)
    GUISetOnEvent($GUI_EVENT_CLOSE, "Ende")
    GUICtrlCreateLabel("Taschenrechner", 30, 10)

    $rechenart = GUICtrlCreateInput("", 10, 80, 110, 20)
    $inputTR1 = GUICtrlCreateInput("", 10, 10, 110, 20)
    $inputTR2 = GUICtrlCreateInput("", 10, 45, 110, 20)
    $buttonTRlsg = GUICtrlCreateButton ("=", 10, 220, 30, 30)
    $LabelTR1 = GUICtrlCreateLabel("Ergebnis", 56, 230, 55, 18)
    GUICtrlSetOnEvent($buttonTRlsg, "calc")
    GUISetState(@SW_SHOW, $window_TR)

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

    While 1
    Sleep(1000)
    WEnd
    Func calc()
    If GUICtrlRead($rechenart) = "+" then
    $Erg = GUICtrlRead($inputTR1) + GUICtrlRead($inputTR2)
    GUICtrlSetData($LabelTR1, $Erg) ; hier zeigt AutoIt exakt die Eingabe an
    ElseIf GUICtrlRead($rechenart) = "-" then
    $Erg = GUICtrlRead($inputTR1) - GUICtrlRead($inputTR2)
    GUICtrlSetData($LabelTR1, $Erg) ; hier zeigt AutoIt exakt die Eingabe an
    EndIf
    EndFunc
    Func Ende()
    Exit
    EndFunc

    [/autoit]


    ganz oben die erste darunter die zweite zahl und ganz unten rechenart bis jetzt nur + oder -

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • ich weiß aber besser als gar nicht war ja nur ne eistiegshilfe erkönnte das ja mit buttons auwechseln

    [autoit]


    Func Ulam($n)
    Return 1
    EndFunc

    [/autoit]


    Rekursion FTW :D

  • Herzlich Willkommen,

    schau Dir mal das Beispiel an.

    Spoiler anzeigen
    [autoit]


    ; TRechner - Demo by RR04

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

    $GUI = GUICreate("TRechner - Demo", 320, 200, -1, -1)
    $input = GUICtrlCreateInput("", 10, 10, 300, 20)
    $bnPlus = GUICtrlCreateButton("+", 10, 40, 75, 30)
    $bnMinus = GUICtrlCreateButton("-", 85, 40, 75, 30)
    $bnDiv = GUICtrlCreateButton("/", 160, 40, 75, 30)
    $bnMulti = GUICtrlCreateButton("*", 235, 40, 75, 30)
    $bn7 = GUICtrlCreateButton("7", 10, 70, 75, 30)
    $bn8 = GUICtrlCreateButton("8", 85, 70, 75, 30)
    $bn9 = GUICtrlCreateButton("9", 160, 70, 75, 30)
    $bnC = GUICtrlCreateButton("C", 235, 70, 75, 60)
    $bn4 = GUICtrlCreateButton("4", 10, 100, 75, 30)
    $bn5 = GUICtrlCreateButton("5", 85, 100, 75, 30)
    $bn6 = GUICtrlCreateButton("6", 160, 100, 75, 30)
    $bn1 = GUICtrlCreateButton("1", 10, 130, 75, 30)
    $bn2 = GUICtrlCreateButton("2", 85, 130, 75, 30)
    $bn3 = GUICtrlCreateButton("3", 160, 130, 75, 30)
    $bnResultat = GUICtrlCreateButton("=", 235, 130, 75, 60)
    $bn0 = GUICtrlCreateButton("0", 10, 160, 150, 30)
    $bnKoma = GUICtrlCreateButton(".", 160, 160, 75, 30)

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

    GUISetState()

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

    While 1
    Switch GUIGetMsg()
    Case - 3
    MsgBox(64, "TRechner - Demo", "Viel Spaß wünscht RR04 !" & @TAB, 3)
    Exit
    Case $bnC
    GUICtrlSetData($input, "")
    Case $bn1
    GUICtrlSetData($input, GUICtrlRead($input) & "1")
    Case $bn2
    GUICtrlSetData($input, GUICtrlRead($input) & "2")
    Case $bn3
    GUICtrlSetData($input, GUICtrlRead($input) & "3")
    Case $bn4
    GUICtrlSetData($input, GUICtrlRead($input) & "4")
    Case $bn5
    GUICtrlSetData($input, GUICtrlRead($input) & "5")
    Case $bn6
    GUICtrlSetData($input, GUICtrlRead($input) & "6")
    Case $bn7
    GUICtrlSetData($input, GUICtrlRead($input) & "7")
    Case $bn8
    GUICtrlSetData($input, GUICtrlRead($input) & "8")
    Case $bn9
    GUICtrlSetData($input, GUICtrlRead($input) & "9")
    Case $bnPlus
    GUICtrlSetData($input, GUICtrlRead($input) & "+")
    Case $bnMinus
    GUICtrlSetData($input, GUICtrlRead($input) & "-")
    Case $bnDiv
    GUICtrlSetData($input, GUICtrlRead($input) & "/")
    Case $bnMulti
    GUICtrlSetData($input, GUICtrlRead($input) & "*")
    Case $bn0
    GUICtrlSetData($input, GUICtrlRead($input) & "0")
    Case $bnKoma
    GUICtrlSetData($input, GUICtrlRead($input) & ".")
    Case $bnResultat
    If GUICtrlRead($input) = "" Then
    MsgBox(64, "Fehler", "Bitte machen Sie erst Ihre Eingaben !" & @TAB)
    Else
    ;i Hier das Auslesen des Inputs und die Berechnung!
    GUICtrlSetData($input, Execute(GUICtrlRead($input)))
    EndIf
    EndSwitch
    WEnd

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

    ; Ende

    [/autoit]


    Viel Erfolg! :thumbup:

  • Ich hab auch mal nen Rechner gebastelt, wenn du willst kannst du ihn haben :D
    Is im GUIOnEventMode geschrieben:

    Viel Spaß ;)

    EDIT: Hab ihn grad noch überarbeitet, ist jetzt um 70 Zeilen kürzer :P

    Spoiler anzeigen
    [autoit]


    #include <ButtonConstants.au3>
    #include <EditConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>

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

    Opt("GUIOnEventMode", 1)

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

    #Region ### START Koda GUI section ### Form=E:\Thomas\Programme\Programmieren\AutoIT v3\AutoIT-Skripte\Rechner\Rechner.kxf
    $Form1_1 = GUICreate("Rechner", 281, 253, 191, 129)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_Exit")
    $Group1 = GUICtrlCreateGroup("Ziffern", 8, 64, 129, 185)
    GUICtrlSetFont(-1, 12, 400, 0, "Calibri")
    $Button1 = GUICtrlCreateButton("1", 16, 88, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button2 = GUICtrlCreateButton("2", 56, 88, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button3 = GUICtrlCreateButton("3", 96, 88, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button4 = GUICtrlCreateButton("4", 16, 128, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button5 = GUICtrlCreateButton("5", 56, 128, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button6 = GUICtrlCreateButton("6", 96, 128, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button7 = GUICtrlCreateButton("7", 16, 168, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button8 = GUICtrlCreateButton("8", 56, 168, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button9 = GUICtrlCreateButton("9", 96, 168, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button10 = GUICtrlCreateButton("0", 56, 208, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button11 = GUICtrlCreateButton(".", 16, 208, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUICtrlSetOnEvent(-1, "_SetData")
    $Group2 = GUICtrlCreateGroup("Rechnugsarten", 144, 64, 129, 185)
    GUICtrlSetFont(-1, 12, 400, 0, "Calibri")
    $Button12 = GUICtrlCreateButton("-", 152, 88, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button13 = GUICtrlCreateButton("+", 152, 128, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button14 = GUICtrlCreateButton("*", 152, 168, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button15 = GUICtrlCreateButton("/", 152, 208, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button16 = GUICtrlCreateButton("(", 192, 88, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button17 = GUICtrlCreateButton(")", 232, 88, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button18 = GUICtrlCreateButton("Sqrt", 192, 128, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button19 = GUICtrlCreateButton("1/x", 192, 208, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button21 = GUICtrlCreateButton("=", 232, 208, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button20 = GUICtrlCreateButton("x²", 192, 168, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button22 = GUICtrlCreateButton("DEL", 232, 128, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    $Button23 = GUICtrlCreateButton("CL", 232, 168, 35, 33, $WS_GROUP)
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlSetOnEvent(-1, "_SetData")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $Group3 = GUICtrlCreateGroup("Output", 8, 0, 265, 65)
    GUICtrlSetFont(-1, 12, 400, 0, "Calibri")
    $Input1 = GUICtrlCreateInput("", 16, 24, 249, 31, BitOR($ES_CENTER, $ES_AUTOHSCROLL, $ES_READONLY))
    GUICtrlSetFont(-1, 14, 400, 0, "Calibri")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    Sleep(100)
    WEnd

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

    Func _SetData()
    Switch @GUI_CtrlId
    Case $Button18
    GUICtrlSetData($Input1, Sqrt(Execute(GUICtrlRead($Input1))))
    Case $Button19
    GUICtrlSetData($Input1, (1 / (Execute(GUICtrlRead($Input1)))))
    Case $Button20
    GUICtrlSetData($Input1, Execute(GUICtrlRead($Input1) * Execute(GUICtrlRead($Input1))))
    Case $Button21
    GUICtrlSetData($Input1, Execute(GUICtrlRead($Input1)))
    Case $Button22
    GUICtrlSetData($Input1, StringTrimRight(GUICtrlRead($Input1), 1))
    Case $Button23
    GUICtrlSetData($Input1, "")
    Case Else
    GUICtrlSetData($Input1, GUICtrlRead($Input1) & GUICtrlRead(@GUI_CtrlId))
    EndSwitch
    EndFunc ;==>_SetData

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

    Func _Exit()
    Exit
    EndFunc ;==>_Exit

    [/autoit] [autoit][/autoit] [autoit][/autoit]
  • Schönes zeug hier ,aber gibt es in AutoIt auch Wurzel oder ² ,also das man einen richtigen Rechner machen könnte(nicht nur +-*/)
    stell doch auf gelöst!?!

  • Schau mal wie alt der Thread ist, du Leichenschänder. :rofl:

    Edit:
    Zu deiner Frage: Ja gibt es. :)

    Wurzel: Sqrt
    Hochzahl: Zahl² = Zahl * Zahl Edit BugFix: x hoch y in AutoIt: x^y  :P

    Edit:
    Ich wusste, dass es mit einem Zeichen geht, aber nicht mehr mit welchem. Danke. ;)

    Zitat

    [Heute, 11:39] Raupi: Soll ich es dir machen?
    [Heute, 11:47] BugFix: "Soll ich es dir machen? " - also Raupi !! bitte nicht so öffentlich :rofl:

    Zitat

    [Heute, 11:51] BugFix: und ich werde es mir jetzt machen - das Mittagessen :P

    AMsg UDF v1.00.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%
    OwnStyle UDF Version 1.10.00 IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII 100%

    3 Mal editiert, zuletzt von H2112 (2. November 2010 um 12:50)