Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Anfänger Taschenrechner Problem
Neuling94 - Di 31.01.12 17:32
Titel: Anfänger Taschenrechner Problem
Hallo Leute,
Ich bin verzweifelt beim Programmieren meines Taschenrechners mittels Delphi5.
Anmerkung: Wir benutzen Delphi in der Schule, haben dort jedoch eine andere "Sprache" als die, die ich hier im Forum finde (wohl eine einfachere). Deswegen hoffe ich das ihr trotzdem damit klar kommt und mir helfen könnt...
Nun zu meinem Problem:
Ich will einen Taschenrechner programmieren. So weit so gut. Jedoch will ich alles auf
einen Display kriegen (also den mit den 3 feldern: Zahl 1, Zahl2, Ergebnis, und den Aktionsknöpfen hab ich schon). Nun zu dem Problem: Ich gebe die gewünschte Zahl über Knöpfe an. Wenn ich dannden "+" - Knopf drücke, soll er den Disply auf "0" setzen und die vorher eingegebene Zahl Speichern (lHilf).
Problem:
Ich will das er die anschließend eingegebene Zahl mit der ersten addiert und auf den Display ausgibt, sobald ich auf "=" drücke. Jedoch passiert wenn ich den Knopf drücke einfach nichts.
Hoffe ihr könnt mir helfen.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| procedure TTaschenrechner.hatKnopfPlusGeklickt(Sender: TObject); var lHilf : GanzeZahl; begin lHilf := hatTextfeldDisplay.InhaltAlsGanzeZahl; hatTextfeldDisplay.setzeInhalt (0); if Sender=hatKnopfGleich then begin hatTextfeldDisplay.setzeInhalt (lHilf+hatTextfeldDisplay.InhaltAlsGanzeZahl ); end; end; |
Metschu - Di 31.01.12 18:53
Ich gehe mal davon aus, das du die Procedure "
hatKnopfPlusGeklickt" ebenfalls ausgeführt wird, wenn du die Taste "=" drückst.
Sonst gibt die Abfrage "
if Sender=hatKnopfGleich" keinen Sinn.
Wenn das so ist, passiert folgender Ablauf:
Delphi-Quelltext
1: 2: 3: 4:
| Procedure wird aufgerufen Inhalt des Displays wird in die Hilfsvariable "lHilf" gesichert Displayinhalt wird auf "0" gesetzt Procedure wird verlassen -> die Hilfsvariable "lHilf" wird aus dem Arbeitsspeicher gelöscht |
Somit hast du beim 2. Aufruf der Procedure durch die "=" Taste wieder eine leere Variable "
lHilf".
Der Fehler liegt also im Bereich der Variablendeklarierung, die man einmal Global und Lokal (wie du es gemacht hast) deklarieren kann.
Bei der Lokalen Deklaration wird die Variable nur für die Procedure genutzt und anschliessen wieder gelöscht ("freigegeben").
Bei der Globalen Deklaration steht die Variable dem Ganzen Programm in jeder Procedure zur Verfügung.
Neuling94 - Di 31.01.12 19:22
ah klar vielen dank Metschu =)
Ich hab nun eine Globale Variable "zHilfszahl" erstellt, die die Displayzahl speichert, und eine Variable "zStatus" die auf +,-,* oder / gesetzt wird.
Wenn daraufhin der "="-Knopf gedrückt wird, wird abgefragt, was als letztes gedrückt wurde (also welche Rechenart) und die Lösung anschließend auf dem Display angezeigt.
Hier die Syntax dafür:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TTaschenrechner.hatKnopfPlusGeklickt(Sender: TObject); begin zHilfszahl := hatTextfeldDisplay.InhaltAlsGanzeZahl; hatTextfeldDisplay.setzeInhalt (0); zStatus := 1; end;
procedure TTaschenrechner.hatKnopfGleichGeklickt(Sender: TObject); begin if zStatus = 1 then begin hatTextfeldDisplay.setzeInhalt (zHilfszahl+hatTextfeldDisplay.inhaltalsganzezahl); end; end; |
nochmals danke für die schnelle Antwort =)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!