Versteckte Anzeige beim Taschenrechner
-
tag
hab ein problem mit nem rechner den ich machen will.
sieht aus wie Windows standart rechner mit zahlbuttons,
die man drücken muss, operatoren und einem = button
nun soll er die erste zahl, die "eingedrückt" wurde,
in das versteckte label (Hide) übertragen , die anzeige
beim richtigen feld löschen und dann die zweite zahl zu
der versteckten addieren//--------------------------------------------------------------------------- void __fastcall TUnique::PosOperatorClick(TObject *Sender) // PlusBottom { float Zahl = StrToFloat(Label->Caption); [i]// Zahl aus Label holen und speichern [/i] HideZahl ->Caption = Zahl; [i]// Versteckte anzeige, die die erste Zahl speichern soll[/i] HideZahl ->Enabled = true; [i]// Damit die zahl sich nicht ändert oder so !? [/i] Label ->Caption = ""; [i]// Label ist hauptfeld[/i] Label ->Caption = x; Ergebnis += x + Zahl; [i]// Ergebnis bestimmen[/i] Label ->Caption = ""; [i]// Eingabe zurücksetzen[/i] return; }mit dem = Button wird Ergebnis ausgegeben und zwar im gleichen Hauptfeld Label
das klappt aber irgendwie nicht.
er setzt zwar die erste zahl in das versteckte Feld ein abe er addiert die zweite nicht dazu.kann mir jemand helfen?
danke
-
Hallo
oh je, da ist ja einiges zu bemängeln.
- Warum benutzt du ein verstecktes Label als Zwischenspeicher? Warum nicht gleich ein float? Dann must du nicht Werte konvertieren.
- Wo kommt Ergebnis her? und wo x? Was macht x?
- Warum setzt du Label->Caption mehrmals?Ich vermute mal, das die Addition so aussehen sollte
Ergebnis += Zahl;bis bald
akari
-
akari schrieb:
- Warum benutzt du ein verstecktes Label als Zwischenspeicher? Warum nicht gleich ein float? Dann must du nicht Werte konvertieren.
weil die erste zahl im gleichen Label wie die zweite zahl und das ergebnis steht
akari schrieb:
- Wo kommt Ergebnis her? und wo x? Was macht x?
x ist jetzt weg das stimmt
akari schrieb:
- Warum setzt du Label->Caption mehrmals?
wie sollte ich es sonst tun?
akari schrieb:
Ergebnis += Zahl;
hab ich jetzt auch geändert.
aber er rechnet immer noch nicht.
würde das prinzip mit der versteckten zahl fuktionieren?MfG
-
Hallo
irgendwie verstehe ich dein Problem nicht. Meiner Meinung nach müßte es doch so aussehen (HideZahl ist ein float, das als Member von TUnique deklariert ist) :
void __fastcall TUnique::PosOperatorClick(TObject *Sender) // PlusBottom { try { HideZahl = StrToFloat(Label->Caption); // Zahl aus Label holen } catch(...) { return; // fehlerbehandlung, wenn Umwandlung nicht möglich } Ergebnis += Hidezahl; // Ergebnis bestimmen Label ->Caption = ""; // Eingabe zurücksetzen }bis bald
akari
-
tag
(HideZahl ist ein float, das als Member von TUnique deklariert ist)
hab ich deklariert aber er bringt die fehlermeldung
[C++ Fehler] Styl.cpp(30): E2060 Unzulässige Verwendung einer Fließkommazahlstimmt was mit dem StrToFloat nicht oder?
MfG
-
Paladin schrieb:
tag
(HideZahl ist ein float, das als Member von TUnique deklariert ist)
hab ich deklariert aber er bringt die fehlermeldung
[C++ Fehler] Styl.cpp(30): E2060 Unzulässige Verwendung einer Fließkommazahlstimmt was mit dem StrToFloat nicht oder?
MfG
??????????
Dein HideZahl ist doch ein Label???
(Zumindest in Deinem ersten Beitrag)
-
Paladin schrieb:
tag
(HideZahl ist ein float, das als Member von TUnique deklariert ist)
hab ich deklariert aber er bringt die fehlermeldung
[C++ Fehler] Styl.cpp(30): E2060 Unzulässige Verwendung einer Fließkommazahlstimmt was mit dem StrToFloat nicht oder?
MfG
kann ich nicht nachvollziehen. Hast du auch das Label HideZahl gelöscht/umbenannt?
bis bald
akari
-
tag
HideZahl ist ein Label
hab oben bei den deklarationen
float HideZahl, ... ;
eingegeben (hab ich doch richtig gemacht oder?)
-
Hallo
Du sollst doch auch das Label HideZahl komplett löschen (mit dem Objektinspektor) ! Es ist zum Speichern einer Floatzahl nicht passend. Stattdessen deklarierst du ein float gleichen Namens.
bis bald
akari
-
ok das hat geklappt
aber er rechnet immer noch nicht richtig.
man drückt zum beispiel 15 ein, drückt auf + ->anzeige wird gelöscht.
wenn man eine andere zahl drückt und dann auf = kommt 15. macht man
nochmals + und eine zahl kommt 30 usw.an was kann das liegen?
-
Hallo
das kommt darauf an, was du mit Ergebnis machst.
Las dir noch in PosOperatorClick denn Wert von Ergebnis anzeigen.
Die Rechnung selber wird schon ausgeführt.bsi bald
akari
-
tag
hab versuch :
void __fastcall TUnique::PosOperatorClick(TObject *Sender) // PlusBottom { try { HideZahl = StrToFloat(Label->Caption); // Zahl aus Label holen } catch(...) { return; // fehlerbehandlung, wenn Umwandlung nicht möglich } Ergebnis += HideZahl; // Ergebnis bestimmen Label ->Caption = ""; // Eingabe zurücksetzen [i]Label ->Caption = String(Ergebnis);[/i] }aber dann löscht er die anzeige nach der ersten zahl nicht und rechnen tut er auch nicht.
das sollte doch möglich sein mit den ergebnis mit =MfG