Taschenrechner (aus dem Buch eigene Apps programmieren)

Startseite Foren Deutsches LiveCode-Forum Taschenrechner (aus dem Buch eigene Apps programmieren)

Ansicht von 14 Antwort-Themen
  • Autor
    Beiträge
    • #18025
      m4723
      Teilnehmer

        Hallo,

        ich bin fleißig am Lernen mit dem sehr gut geschriebenen Buch.
        Jetzt bin ich bei Kapitel 7 und versuche einen Taschenrechner zu basteln, allerdings will das nicht funktionieren.
        Es kommt immer dieser Fehler: (value: error executing expression) near “2+3=”, char 1

        Selbst wenn ich den kompletten Code aus dem Übungsprojekt kopiere kommt der Fehler.

        Starte ich das Übungsprojekt funktioniert der Taschenrechner einwandfrei.
        Wo liegt jetzt da der Fehler?

        
        global neu
        global aufgabe
        global ergebnis
        
        on mouseDown
           if "Button" is in the target then
              if neu = true then
                 put empty into field "display"
                 put false into neu
              end if
              put the label of the target after field "display"
           end if
        end mouseDown
        
        on ausrechnen
           set the numberFormat to ".#####"
           put field "display" into aufgabe
           try
              put the value of aufgabe into ergebnis
           catch err
              put "Fehleingabe" into ergebnis
           end try
           put ergebnis into field "display"
           put true into neu
        end ausrechnen
        

        Die Button heißen “Button” und die Label sind durchnummeriert.

        Danke im Voraus.

        Grüße Matze

      • #18030
        Klaus Major
        Administrator

          Hallo Matze,

          willkommen im Forum!

          Ich kenne das Buch nicht, wo genau kommt der Fehler bzw. welche Zeile genau meckert LC an? Du hast ja zwei Handler in Deinem Skript oben.

          Gruß

          Klaus

        • #18039
          m4723
          Teilnehmer

            Hi,

            es geht um das Buch Rheinwerk-Verlag

            Der Fehler passiert beim “ausrechnen”.
            Bei “Try Catch” erscheint immer “Fehleingabe” im Display.
            Wenn ich den “Try Catch” weg lasse, kommt es hier zum Fehler: put the value of aufgabe into ergebnis

            Danke im Voraus 🙂

            Grüße Matze

          • #18040
            Klaus Major
            Administrator

              OK, und was steht genau in dem Feld, wenn der Fehler auftaucht?
              Habe das gerade mal getestet und 2+2 ins Feld eingegeben:

              on mouseUp
                 put field "display" into aufgabe
                 put the value of aufgabe into ergebnis
                 answer ergebnis
              end mouseUp

              Und erhielt -> 4

            • #18042
              Klaus Major
              Administrator

                Ah, gerade gesehen:
                Das Gleichheitszeichen = am Ende des Feldes generiert den Fehler! Daher zur Not:

                ...
                ## Ist letztes Zeichen im Feld ein =?
                if char -1 of fld "display" = "=" then
                
                  ## Dann löschen:
                  delete char -1 of fld "display"
                end if
                ...

                Oder direkt den Handler “ausrechnen” aufrufen, wenn der User ein = eingibt!?

              • #18050
                m4723
                Teilnehmer

                  Perfekt!
                  Danke Klaus.

                  Habe statt “field “display”” die Variable “aufgabe” prüfen lassen, dann hat es funktioniert.
                  Allerdings verstehe ich immer noch nicht warum das bei den Übungsdateien (die 1 zu 1 identisch sind mit meinem Code) funktioniert und bei dem was ich getippt habe nicht.

                  Aber das ist auch nicht weiter tragisch und irgendwann werde ich hoffentlich auch auf solche Ideen kommen. 🙂

                  Schönen Abend und bis zum nächsten Mal.

                • #18070
                  Torsten
                  Teilnehmer

                    Hi,

                    schau Dir unbedingt mal das Video von Hauke zum Taschenrechner an: https://youtu.be/N93qGiCmdtQ
                    Der ist viel besser als der im Buch 🙂

                    LG
                    Torsten

                  • #18078
                    m4723
                    Teilnehmer

                      Hi,

                      da hast du Recht.
                      Obwohl der aus dem Buch eigentlich aktueller ist/ sein sollte.
                      Schade auch, das nur zwei Videos von ihm Verfügbar sind.

                      Grüße Matze

                    • #18082
                      hauke
                      Administrator

                        Hallo Matze,

                        der Fehler ist nur ersichtlich, wenn man auch das Button-Skript, das zum “=-Button” gehört, betrachtet. Das Problem liegt darin, dass es “on mouseup” im Card-Abfrageskript heißen muss und nicht “on mousedown”. Das ist im Buch ein bisschen verwirrend, denn das Skript wird hier in einem Schritt von “mousedown” auf mouseup” geändert, ohne dass nochmal drauf hingewiesen wird.
                        Denn nur wenn im Button-Skript und im Card-Skript dasselbe abgefragt wird (also “mouseup”) kann sichergestellt werden, dass das Card-Skript nicht mehr aufgerufen wird, wenn der Button es bereits abgefangen hat.

                        Alles klar?

                        Torsten: Warum findest du, dass meine Youtube-Version besser sei? Im Grunde ist sie doch gleich wie im Buch, nur dass sie im Buch es etwas didaktischer aufbereitet habe und abgesichert gegen Fehleingaben.

                      • #18084
                        m4723
                        Teilnehmer

                          Hallo,

                          von der Theorie ist es jetzt klar.
                          Morgen setze ich das noch um, damit meine Übungen (Taschenrechner in dem Fall) auch in der Praxis einwandfrei funktionieren.

                          Den Rechner aus dem Video habe ich heute ebenfalls nachgebaut, dass hat wunderbar funktioniert und war dann wieder ein kleiner Erfolg.

                          Weitere Videos wären großartig.

                          Danke für die Erklärung.

                          Grüße Matze

                        • #18104
                          Torsten
                          Teilnehmer

                            @Hauke

                            ich beziehe mich beim Taschenrechner auf die erste Auflage des Buches. Da hast Du nur die Addition berücksichtigt, aber alles andere nicht. Eine Erweiterung um minus, mal und geteilt wird recht komplex.

                            Durch die geniale Verwendung von
                            put the value of field "ausgabe" into field "ausgabe"
                            wird eine Menge Komplexität abgenommen (z.B. auch das Rechnen mit Klammern) und gezeigt, wie elegant das mit Livecode geht 🙂

                          • #18106
                            Klaus Major
                            Administrator

                              VALUE ist eine Funktion, daher kann man auch hier wieder etwas Tipparbeit (drei Buchstaben weniger!) sparen, wenn man sie mit der “üblicheren” Syntax verwendet:

                              ...
                              put value(field "ausgabe") into field "ausgabe
                              ...

                              🙂

                            • #18108
                              Torsten
                              Teilnehmer

                                oder noch kürzer:

                                put value(fld "ausgabe") into fld "ausgabe

                                Alter Tastensparfuchs 🙂

                              • #18113
                                Klaus Major
                                Administrator

                                  HA! 😀

                                • #18115
                                  hauke
                                  Administrator

                                    @Torsten: Ja, in der ersten Auflage war der richtige Taschenrechner noch nicht enthalten, in der zweiten habe ich den Rechner aus dem Video übernommen.


                                    @Klaus
                                    : Da hast du natürlich Recht – jede gesparte Taste verlängert das Leben… 🙂

                                Ansicht von 14 Antwort-Themen
                                • Du musst angemeldet sein, um auf dieses Thema antworten zu können.