Startseite › Foren › Deutsches LiveCode-Forum › Taschenrechner (aus dem Buch eigene Apps programmieren)
Schlagwörter: Buch, Eigene Apps programmieren, Ereignisse, Hierarchien, Methoden, Taschenrechner
- Dieses Thema hat 14 Antworten und 4 Teilnehmer, und wurde zuletzt aktualisiert vor 4 Jahren, 9 Monaten von hauke.
-
AutorBeiträge
-
-
Januar 6, 2020 um 12:28 Uhr #18025
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 1Selbst 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
-
Januar 6, 2020 um 15:42 Uhr #18030
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
-
Januar 6, 2020 um 17:20 Uhr #18039
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
-
Januar 6, 2020 um 17:25 Uhr #18040
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
-
Januar 6, 2020 um 17:28 Uhr #18042
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!?
-
Januar 6, 2020 um 17:56 Uhr #18050
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.
-
Januar 7, 2020 um 15:20 Uhr #18070
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 -
Januar 7, 2020 um 17:33 Uhr #18078
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
-
Januar 7, 2020 um 20:23 Uhr #18082
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.
-
Januar 7, 2020 um 21:32 Uhr #18084
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
-
Januar 8, 2020 um 16:13 Uhr #18104
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 🙂 -
Januar 8, 2020 um 16:28 Uhr #18106
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 ...
🙂
-
Januar 8, 2020 um 16:45 Uhr #18108
oder noch kürzer:
put value(fld "ausgabe") into fld "ausgabe
Alter Tastensparfuchs 🙂
-
Januar 8, 2020 um 17:04 Uhr #18113
HA! 😀
-
Januar 8, 2020 um 20:14 Uhr #18115
-
-
AutorBeiträge
- Du musst angemeldet sein, um auf dieses Thema antworten zu können.