![]() |
Taschenrechner in der Schule
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,
bin ein totaler Delphi Anfänger und hab mal ne frage wie ich das nun lösen kann!! Is ne Aufgabe aus der Schule! Der Rechner soll OOP sein! Bei meinem Tascherechner ist das Problem das ich die Grundrechenarten nur seperat berechnen kann! Habe das problem im programm markiert und kurz erläutert! danke im vorraus!! |
DP-Maintenance
Dieses Thema wurde von "Daniel" von "Open-Source" nach "Sonstige Fragen zu Delphi" verschoben.
|
Re: Taschenrechner in der Schule
also soweit ich das sehen konnte würde sich dein problem dadurch lösen lassen, wenn du eine weitere membervariable in deine TRechnen-Klasse einbaust, in der du die gewünschte rechenart ablegst, z.B. '+', '-' etc. und dann beim IstGleichClick mittels einer case-anweisung abfragst welche rechenart gewünscht ist und dementsprechend die prozeduren aufrufst
|
Re: Taschenrechner in der Schule
Liste der Anhänge anzeigen (Anzahl: 1)
Danke erstmal für den Tipp!!
Hab das mit der case-Anweisung versucht nur funktioniert leider immer noch nicht!!! Das Problem ist das er die erste Zahl sofort versucht mit der Zweiten zu Addieren, Subtrahieren... Da die zweite Zahl aber noch nicht eingegeben wure liegt sie noch auf Null!! Weiterhin liegt ein Problem noch bei meinem Zifferblatt, brauch glaube ne bessere Anweisung! Wäre also cool wenn ihr mir dabei helfen könntet. Stelle die neuere variante noch mal rein!! |
Re: Taschenrechner in der Schule
das kann auch nicht funktionieren, wenn du die funktionen von TRechnen weiterhin aufrufst...
Delphi-Quellcode:
außerdem nochwas, das ergebnis kann nicht korrekt zurückgeliefert werden solange du nicht deine "Grundrechenarten" prozedur aufrufst.
procedure TRechner.SubtrahiereBtnClick(Sender: TObject);
begin a := 2; DatenAkktualisieren; Rechnen.Subtraktion; // <-- dieser aufruf muss weg end; procedure TRechner.MultipliziereBtnClick(Sender: TObject); begin a := 3; DatenAkktualisieren; Rechnen.Multiplikation; // <-- dieser aufruf muss weg end; procedure TRechner.DividiereBtnClick(Sender: TObject); begin a := 4; DatenAkktualisieren; Rechnen.Division; // <-- dieser aufruf muss weg end;
Delphi-Quellcode:
probier es so nochmal...
function TRechnen.GetErgebnis : real;
begin GrundRechtenArten; // <-- diesen Aufruf hast du vergessen result := Ergebnis; end; |
Re: Taschenrechner in der Schule
Vielen Dank!!!!
Jetzt funktioniert es!! Hatte es einfach vergessen! Kannst du mir vielleich auch noch bei meinem zweiten Problem helfen?? Das mit dem Ziffernblatt?? |
Re: Taschenrechner in der Schule
schau mal in deinem pn Eingang
:dp: |
Re: Taschenrechner in der Schule
im moment ist es nur möglich eine zahl einzugeben, das würde sich dadurch lösen lassen das du folgendes machst:
Delphi-Quellcode:
wenn man sich das genau ansieht sieht man sogar das es mehr oder weniger immer das selbe ist, du kannst also EinsBtnClick, ZweiBtnClick etc. zu einer einzigen BtnClick-Prozedur zusammenfassen, und die Caption benutzen um zu bestimmen welche zahl angefügt werden soll
procedure TRechner.EinsBtnClick(Sender: TObject);
begin if Eingabe1Edt.Text <> '0' then // wenn schon zahl vorhanden, anfügen Eingabe1Edt.Text := Eingabe1Edt.Text + '1' else // ansonsten ersetzen Eingabe1Edt.Text := '1'; // | <-- original end; procedure TRechner.ZweiBtnClick(Sender: TObject); begin if Eingabe1Edt.Text <> '0' then // wenn schon zahl vorhanden, anfügen Eingabe1Edt.Text := Eingabe1Edt.Text + '2' else // ansonsten ersetzen Eingabe1Edt.Text := '2'; // | <-- original end; ...
Delphi-Quellcode:
edit: da schreibt man mal was, bleibt mitten drin stehn und geht für paar stunden weg, und schon schreibt da jemand anders auch etwas (kann zwar nich jeder lesen, aber ok) was die lösung sein könnte :stupid:
procedure TRechner.EinsBtnClick(Sender: TObject);
begin if Eingabe1Edt.Text <> '0' then // wenn schon zahl vorhanden, anfügen Eingabe1Edt.Text := Eingabe1Edt.Text + TButton(Sender).Caption else // ansonsten ersetzen Eingabe1Edt.Text := TButton(Sender).Caption; end; |
Re: Taschenrechner in der Schule
Dankeschön!!!!!! :-D
Werde als nächstes mal versuchen die Werte in ne Dualzahl oder Hex umzuwandeln :coder: und wenn ich alleine nicht mehr weiter komme wende ich mich dann wieder an euch!! |
Re: Taschenrechner in der Schule
schau dir mal IntToHex() an
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz