Hallo
Hannoi,
zuerst möchte ich dich bitten, wenn du Quelltexte diese in Delphi-Tags ein zu schließen, damit sie übersichtlicher werden. Das sähe dann so aus:
Quelltext
1: 2:
| <div class="syntaxContainer"> <div class="syntaxSelect"> <a class="genmed" style="text-decoration: none" href="javascript:selectAll(62321410)">markieren</a> </div> <div class="syntaxTitle genmed"> <a style="text-decoration: none" href="javascript:toggleCode(62321410)"> <span id="minusFor62321410"><img class="codecollapse crispscaling" align="top" src="./graphics/bbcode/code_hide.png" border="0" alt="ausblenden" title="ausblenden"/></span> <span style="display: none;" id="plusFor62321410"><img class="codecollapse crispscaling" align="top" src="./graphics/bbcode/code_show.png" border="0" alt="anzeigen" title="anzeigen"/></span> </a> <b>Delphi-Quelltext</b> <span class="copyright" style="display: none" id="hintFor62321410"> </span> </div> <div id="code62321410" class="syntax" style=" "> <table cellspacing="0" cellpadding="0"> <tr> <td valign="top" style="text-align: right; padding-right: 3px; border: #DBE4EB solid; border-width: 0px 1px 0px 0px;"> <pre>1: </pre> </td> <td valign="top" style="width: 100%; padding-left: 3px;"> <pre class="sourcecode"><span class="codecomment">{PROTECTTAGf7f6e6f790eb7fcff461fd8ac105a632}</span> </pre> </td> </tr> </table> </div></div> |
Aber jetzt zu deinem Problem. Ich schätze, du kommst am ehesten da hin wo du hin willst, wenn du das Design deines Taschenrechners änderst. Momentan hast du ja scheinbar zwei Edit Felder und eine Wahlmöglichkeit des Operators. Du solltest ihn eher wie einen echten Taschenrechner aufbauen (ähnlich dem Windows Taschenrechener). Denn das erlaubt es deinem Anwender
fortlaufende eingaben zu machen, er muss also nicht das Eingabefeld wechseln und du hast schon mal das erste Problem gelöst, wie gibt der Benutzer seine mehreren Werte ein.
Selber musst du natürlich dann ein wenig aufpassen was eingegeben wird, denn jedes mal, wenn ein Operator eingegeben wird musst du entsprechend reagieren.
Soll beispielsweise diese Aufgabe gerechnet werden:
Quelltext
So muss dein Programm in etwa so etwas machen:
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17:
| Eingabe: 5 Aktion: keine
Eingabe: + Aktion: Feststellen, das 5 deine Zahl 1 ist (denn es gibt noch keine vorher Eingegebene) und das + der Operator sein soll
Eingabe: 4 Aktion: keine
Eingabe: - Aktion: Erkennen, dass noch eine + Berechnung nicht beendet ist, daher Feststellen, dass 4 deine Zahl 2 ist. Die Aufgabe 5+9 Lösen und das Ergebnis als neue Zahl 1 speichern, und den Operator auf - Setzen (denn das soll ja deine nächste Rechnung werden).
Eingabe: 2 Aktion: Keine
Eingabe: = Aktion: Erkennen das du schon eine Zahl 1 hast (9 = das Ergebnis von 5+4) und das die eingegebene 2 die Zahl 2 sein muss. Erkennen das dein Operator - ist 9-2 ausrechnen. Das Ergebnis in Ergebnis speichern. |
Wie du siehst besteht der Trick darin, fest zu stellen, ob die Rechnung jetzt beendet ist oder ob sie weiter geht. Wenn sie weiter geht, dann bildest du ein Zwischenergebnis und speicherst es in Zahl 1. In einem zweiten Schritt kannst du dir dann überlegen, wie du das Verfahren erweitern musst damit auch "Punkt vor Strich" beachtet wird. Aber ich schätze, wenn du das hier vorgeschlagene Verfahren umsetzen willst ist das erst einmal genug Herausforderung für einen ersten Schritt.
critter
Diejenigen, die grundlegende Freiheiten aufgeben, um ein wenig mehr vorrübergehende Sicherheit zu erkaufen, verdienen weder Freiheit noch Sicherheit.
(Benjamin Franklin;"The Papers of Benjamin Franklin", Vol. 6, Apr. 1, 1755, through Sep. 30, 1756)