Kassenprogramm - AutoIT kann nicht mit Kommazahlen rechnen :(

  • Hi Leute!
    Ich habe mal die Idee bekommen - nur so zum Spaß, ein Programm zu erstellen, womit man was Kaufen kann.
    Allerdings kann AutoIT nicht mit Kommazahlen rechen (nach meiner Vorstellung).
    weil

    [autoit]


    $karottegesamt = $anzahlkarotte*"0,15" ;Das funktioniert nicht.

    [/autoit]
    Mein Skript
    [autoit]


    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <ListViewConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <EditConstants.au3>
    Opt("MustDeclareVars")
    Global $summe="0,00 EURO", $gegeben=" 8,88"
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("Virtual Cash - Waren kaufen", 431, 340, 192, 124)
    $ListView1 = GUICtrlCreateListView("Waren|Preis/ stk", 8, 8, 257, 297)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 190)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 1, 63)
    $Karotte = GUICtrlCreateListViewItem("Karotte|0,15€", $ListView1)
    $Banane = GUICtrlCreateListViewItem("Banane|0,30€", $ListView1)
    $Birne = GUICtrlCreateListViewItem("Birne|0,45€", $ListView1)
    $Orange = GUICtrlCreateListViewItem("Orange|1,20€", $ListView1)
    $Apfelsine = GUICtrlCreateListViewItem("Apfelsine|2,00€", $ListView1)
    $Erdbeere = GUICtrlCreateListViewItem("Erdbeere|1,50€", $ListView1)
    $Label1 = GUICtrlCreateLabel("Hinweis: Du kannst im 1.Level nur Früchte kaufen!", 8, 312, 243, 17)
    $ListView2 = GUICtrlCreateListView("Einkaufwagen", 272, 8, 153, 297)
    GUICtrlSendMsg(-1, $LVM_SETCOLUMNWIDTH, 0, 149)
    $kaufen = GUICtrlCreateButton("Kaufen", 352, 312, 75, 25, $WS_GROUP)
    GUICtrlSetFont(-1, 10, 400, 0, "Comic Sans MS")
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    #Region ### START Koda GUI section ### Form=
    $Form1 = GUICreate("", 620, 198, 192, 124, -1, BitOR($WS_EX_TOOLWINDOW,$WS_EX_WINDOWEDGE))
    $Pic1 = GUICtrlCreatePic("C:\Users\Jonathan Verbeek\Desktop\display_oben.jpg", 0, 0, 617, 41, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic2 = GUICtrlCreatePic("C:\Users\Jonathan Verbeek\Desktop\display_links.jpg", 0, 40, 41, 121, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic3 = GUICtrlCreatePic("C:\Users\Jonathan Verbeek\Desktop\display_rechts.jpg", 584, 40, 33, 121, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $Pic4 = GUICtrlCreatePic("C:\Users\Jonathan Verbeek\Desktop\display_unten.jpg", 0, 160, 617, 33, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $gegebenl = GUICtrlCreateLabel("Gegeben:", 288, 128, 51, 17)
    $gegeben = GUICtrlCreateInput("", 344, 128, 153, 21)
    $bezahlen = GUICtrlCreateButton("Bezahlen!", 504, 128, 75, 25, $WS_GROUP)
    GUISetState(@SW_HIDE)
    #EndRegion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    $JA_NEIN = MsgBox(36,"Beenden?","Wirklich beenden? Alle Käufe gehen verloren!")
    If $JA_NEIN = 6 Then
    Exit
    EndIf
    Case $bezahlen
    $display = GUICtrlCreateLabel(" "&GUICtrlRead($gegeben), 64, 40, 494, 83)
    GUICtrlSetFont(-1, 72, 800, 0, "LCD")
    GUICtrlSetColor(-1, 0x00FF00)
    Case $Karotte
    $anzahlkarotte = InputBox("Anzahl der Karotten","Gebe eine Anzahl an Karotten ein!")
    $karottebuy = GUICtrlCreateListViewItem($anzahlkarotte&"x Karotte", $ListView2)
    Case $Banane
    $anzahlbanane = InputBox("Anzahl der Bananen","Gebe eine Anzahl an Bananen ein!")
    $bananebuy = GUICtrlCreateListViewItem($anzahlbanane&"x Banane", $ListView2)
    Case $Birne
    $anzahlbirne = InputBox("Anzahl der Birnen","Gebe eine Anzahl an Birnen ein!")
    $birnebuy = GUICtrlCreateListViewItem($anzahlbirne&"x Birne", $ListView2)
    Case $Orange
    $anzahlorange = InputBox("Anzahl der Orangen","Gebe eine Anzahl an Orangen ein!")
    $orangebuy = GUICtrlCreateListViewItem($anzahlorange&"x Orange", $ListView2)
    Case $Apfelsine
    $anzahlapfelsine = InputBox("Anzahl der Apfelsinen","Gebe eine Anzahl an Apfelsinen ein!")
    $apfelsinebuy = GUICtrlCreateListViewItem($anzahlapfelsine&"x Apfelsine", $ListView2)
    Case $Erdbeere
    $anzahlerdbeere = InputBox("Anzahl der Erdbeeren","Gebe eine Anzahl an Erbeeren ein!")
    $erdbeerebuy = GUICtrlCreateListViewItem($anzahlerdbeere&"x Erdbeere",$ListView2)
    Case $kaufen
    ;Summe ausrechnen - Wie? Der kann nicht mit Kommazahlen rechnen ; Test an MsgBox!
    $karottegesamt = $anzahlkarotte*"0,15"

    EndSwitch
    WEnd

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

    MfG button421

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Wenn ich jetzt 10 mal bei der Anzahl eingebe, sagt ne MsgBox: 1,5 ?
    Meint der 1,50 oder 1,05?

    Meine fertigen Projekte:
    VirtualCash
    Monopoly Digital

    Daran arbeite ich gerade:
    Einem Skript, womit man ohne Programmierkentisse eigene Programme machen kann (habe ich selber früher gesucht :D ) Stand: ||||||||||||||||||||||||| 6%

  • Das ist doch so, wie bei einem Taschenrechner, da werden auch nicht die unnötigen Nullen nach dem Komma angezeigt.
    //Edit: Wow, da kamen aber viele Beiträge dazu :D

  • Hab ich auch grad gemerkt, komisch... Egal, so gehts (Für Zahlen von 1-10)

    Spoiler anzeigen
    [autoit]

    If StringLen($string) = 3 Then
    MsgBox(0,"",$string&"0")
    ElseIf StringLen($string)=1 Then
    MsgBox(0,"",$string&".00")
    Else
    MsgBox(0,"",$string)
    EndIf

    [/autoit]
  • hm hier mal ein kleines Beispiel:

    Spoiler anzeigen
    [autoit]

    GUICreate("", 388, 73, 192, 124)
    $Wert1 = GUICtrlCreateInput("Wert1", 8, 8, 121, 21)
    $Wert2 = GUICtrlCreateInput("Wert2", 8, 40, 121, 21)
    $Addieren = GUICtrlCreateButton("Addieren", 144, 24, 75, 25)
    $Ergebnis = GUICtrlCreateLabel("Ergebnis", 232, 28, 141, 17)
    GUISetState(@SW_SHOW)

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case -3
    Exit
    Case $Addieren
    GUICtrlSetData($Ergebnis,StringReplace(Round(Number(StringReplace(GUICtrlRead($Wert1),",",".")+StringReplace(GUICtrlRead($Wert2),",",".")),2),".",","))
    EndSwitch
    WEnd

    [/autoit]

    und 1,5 ist nicht 1,05 ;)

    Edit: hm da war ich wohl zu langsam ^^

    21 is only half the truth.

  • Hi,

    da der Nutzer die Beträge wählen kann reicht es aus die Dezimalstelle als Punkt vorzugeben.

    [autoit]


    $Karotte = GUICtrlCreateListViewItem("Karotte|0,15€", $ListView1) ;Deine Voreinstellung
    $Karotte = GUICtrlCreateListViewItem("Karotte|0.15€", $ListView1) ; Besser so ;)

    [/autoit]


    Bei Rechnern muss man die Eingaben des Nutzers berücksichtigen und verarbeiten z.B. mit "StringReplace".

    Da Du aber Variablen mehrfach vergeben hast denke ich, dass Du auch mit Zitronen gehandelt hast (Scherz- Variable Form1) .