Visual Basic: Brauche Hilfe bei einem Taschenrechner?
Hey Leute, ich mache gerade einen Taschenrechner in VB 6 und habe dabei zwei Probleme.
- Problem:
Der Taschenrechner kann höchstens drei Zahlen aufeinmal speichern. Bei der Eingabe steht zuerst die erste Zahl in der Anzeige des Taschenrechners, dann nur das erste Rechenzeichen, dann nur die zweite Zahl, dann nur das zweite Rechenzeichen, dann nur die dritte Zahl und wenn man dann wieder auf ein Rechenzeichen klickt, werden zu erst die drei Zahlen zusammengerechnet und dann erscheinen das Ergebnis und das nächste Rechenzeichen GLEICHZEITIG in der Anzeige. Mein Problem ist, dass wenn ich dann die nächste Zahl eingebe, dass dann eigentlich diese allein ohne das Ergebnis und das Rechenzeichen in der Anzeige erscheinen sollte, aber bei mir steht dann alles gleichzeitig in der Anzeige.
2 . Problem:
Wenn ich zwei Zahlen und ein Rechenzeichen eingebe und dann auf Gleich klicke, kommt das richtige Ergebnis raus, aber bei drei Zahlen nicht.
- Wenn man durch Null dividiert, soll in der Anzeige die Nachricht "Man darf nicht durch Null dividieren" erscheinen
Variablen, die ich benutzte:
Dim Zahl1 As Double
Dim Zahl2 As Double
Dim Zahl3 As Double
Dim Operation1 As String <-- für das erste Rechenzeichen
Dim Operation2 As String <-- für das zweite Rechenzeichen
Dim Ergebnis As Boolean <-- wird auf True gesetzt, wenn das Ergebnis alleine oder noch ein Rechenzeichen dazu in der Anzeige stehen
Dim Zahl1N As Boolean <-- werden alle drei benutzt, um zu sehen, ob eine Zahl positive oder negativ ist
Dim Zahl2N As Boolean
Dim Zahl3N As Boolean
Und die Anzeige des Taschenrechners heißt "edAnzeige"
Um das erste Problem zu lösen habe beim Code der Buttons für die Zahlen 0-9 folgendes geschrieben:
'Wenn ein Ergebnis und ein Rechenzeichen in der Anzeige stehen
ElseIf (Ergebnis = True) And (edAnzeige <> " ") And (Operation1 <> " ") And (Operation2 = " ") Then
edAnzeige = " "
Dadurch wurde das Problem bei den Rechenzeichen Mal und Geteilt gelöst, aber immer noch nicht bei Plus und Minus.
Hier ist der Teil des Codes, den ich für einen Fall beim Button geschrieben habe (2. Problem):
'Wenn die erste Zahl, ein Plus, die zweite Zahl, ein zweites Plus und eine dritte Zahl eingegeben wurde
ElseIf (edAnzeige <> " ") And (Operation1 = "+") And (Operation2 = "+") Then
Zahl3 = edAnzeige
edAnzeige = Zahl1 + Zahl2 + zahl3
Zahl1 = edAnzeige
Operation1 = ""
Operation2 = ""
Zahl1N = False
Zahl2N = False
Zahl3N = False
Ergebnis = True
Das hier habe ich beim Button für die Zahl 0 im Code geschrieben (Problem 3):
'Wenn durch Null dividiert wird
If (edAnzeige = " / ") Then
edAnzeige = "Man darf nicht durch Null dividieren"
Der Code für das dritte Problem klappt allerdings auch nicht.
Ich kann bei keinem der Codes irgendwelche Fehler entdecken. Deshalb hoffe ich, dass mir hier vielleicht jemand weiterhelfen kann.
LG Hiavatha8
1 Antwort
- Kannst du diesen Fall bitte Schritt für Schritt an einem Beispiel nachstellen? Ich bin mir nicht sicher, ob ich dein Problem richtig verstanden habe. Momentan hört es sich so an, als würdest du nach der Berechnung des Ergebnisses das Eingabefeld nicht wieder leeren.
- Kannst du bitte deinen gesamten Quellcode bei http://pastebin.com/ posten?
Insgesamt wirkt dein Vorgehen umständlich. Die boolschen Variablen für negative oder positive Zahlen könntest du dir, meiner Meinung nach, sicherlich sparen. Sollte die Eingabe einer Berechnung darin bestehen, dass der Nutzer einen gesamten String eingeben kann, z.B. "1+2-34" würde ich mit Schleifen durch den String gehen, um die richtige Rechnung zusammenzubauen.