![]() |
Re: Taschenrechner Ausgabe
Delphi-Quellcode:
also wie ich das ergebnis ausgebe weiß ich auch noch nicht..
function TFormTR.BerechneTerm(Formular: string): Double;
var Seg1,Seg2 :double; index : integer; Op : string; begin Formular := LabelAnzeige.Caption; for index := 0 to 3 do begin case index of 0: Op := '*'; 1: Op := '/'; 2: Op := '+'; 3: Op := '-'; end; if pos(Op,Formular) > 1 then begin Seg1 := BerechneTerm(copy(Formular,1,pos(Op,Formular) - 1)); Seg2 := BerechneTerm(copy(Formular,pos(Op,Formular) + 1,length(Formular))); case index of 0: Result := Seg1 + Seg2; 1: Result := Seg1 - Seg2; 2: Result := Seg1 * Seg2; 3: Result := Seg1 / Seg2; end; end; end; Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption)); end; |
Re: Taschenrechner Ausgabe
Ich kenne jetzt nicht den ganzen Code, aber was möglicherweise falsch läuft
Irgendwo im Code wird BerechneTerm zum ersten mal aufgerufen, da könnte folgendes stehen
Delphi-Quellcode:
innerhalb der function BerechneTerm läuft was falsch
// Aufruf der rekursiven Methode
BerechneTerm(LabelAnzeige.Caption); // Danach Anzeige des Ergebnis LabelAnzeige.Caption := FloatToStr(Result);
Delphi-Quellcode:
function TFormTR.BerechneTerm(Formular: string): Double;
[...] // Das muss weg, macht keinen Sinn //Formular := LabelAnzeige.Caption; [...] // Das muss innerhalb wohl auch weg //Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption)); Zitat:
|
Re: Taschenrechner Ausgabe
Delphi-Quellcode:
wenn ich diese weg mache, wo kommt dann die Ausgabe hin, ok das was da oben steht ist fehlerhaft aber muss die Ausgabe in die finction rein oder muss sie wo anders geschrieben werden..
Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption));
|
Re: Taschenrechner Ausgabe
also erstmal result is der rueckgabewert der funktion, nicht gleichzusetzen mit einer ausgabe!
eine ausgabe kannst du zb mit einem label oder panel realisieren, wenns nur das ergebnis ist was du ausgeben moechtest, also einfach ein panel oder ein label auf deine form schieben und dann inder onclick routine vom button "=" oder "berechne" (weiss ja nich wie du den genannt hast):
Delphi-Quellcode:
label1.caption:=floattostr(berechne(labelanzeige.caption)) |
Re: Taschenrechner Ausgabe
Du scheinst nicht zu wissen wie du mit funktionen umzugehen hast, schau dir im Crashkurs mal die funktionen an dann wird dir das klarer.
![]() |
Re: Taschenrechner Ausgabe
Ich soll aber kein neues label machen, sondern es soll alles auf LabelAnzeige angezeigt werden.
Soll die Ausgabe in der Funktion drin sein, oder soll die woanders drin stehen? |
Re: Taschenrechner Ausgabe
Zitat:
![]() Sinnvoll wäre es wie dort gezeigt die Funktion aufzurufen und danach außerhalb den Label mit dem Rückgabewert zu beschriften. |
Re: Taschenrechner Ausgabe
sie sollte unter deine fertige berechnung, also wuerde ich sie in die onclick routine deines buttons machen den du drueckst um die berechnung zu starten!
dann nimm als ausgabe doch einfach das label!! also:
Delphi-Quellcode:
labelanzeige.caption:=floattostr(berechne(labelanzeige.caption)); |
Re: Taschenrechner Ausgabe
Zitat:
Außerhalb steht (im ButtonClick von "=" möglicherweise)
Delphi-Quellcode:
Man muss klar sagen, das die Aufgabe für den aktuellen Wissensstand zu hoch gegriffen wurde. Ob das ein Fehler des Lehrers war oder ob safak67 davor zulange im Unterricht gepennt hat kann man nur raten. An safak67 nur den Rat, den Lehrer über den Umstand aufklären oder wenn es eigene Schuld ist, die Grundlagen (Links wurden genug aufgeführt) dringend nachholen.
LabelAnzeige.Caption := FloatToStr(BerechneTerm(LabelAnzeige.Caption));
|
Re: Taschenrechner Ausgabe
Also meine Schuld ist es nicht das kann ich euch garantieren. Ich muss ein Praktikum machen und die Aufgbe wurde mir gestellt, und je schlechter ich das mache desto schlechtere Noten kriege ich. Wir hatten noch nicht mal Delphi als Programmiersprache nur c++ aber sogar da sind wir nicht soweit..
Das doofe ist ja das ich ein Rechenparse schreiben muss und das Programm was ich jetzt habe nicht ganz korekt ist.. ich habe es ein bisschen geändert aber meine berechnungen funktioieren iwi nicht
Delphi-Quellcode:
procedure TFormTR.spResultClick(Sender: TObject);
begin LabelAnzeige.Caption := FloatToStr(BerechneTerm(LabelAnzeige.Caption)); end; function TFormTR.BerechneTerm(Formular: string): Double; var Seg1,Seg2 : double; index : integer; Op : string; begin for index := 0 to 3 do begin case index of 0: Op := '*'; 1: Op := '/'; 2: Op := '+'; 3: Op := '-'; end; if pos(Op,Formular) > 1 then begin Seg1 := BerechneTerm(copy(Formular,1,pos(Op,Formular) - 1)); Seg2 := BerechneTerm(copy(Formular,pos(Op,Formular) + 1,length(Formular))); case index of 0: Result := Seg1 + Seg2; 1: Result := Seg1 - Seg2; 2: Result := Seg1 * Seg2; 3: Result := Seg1 / Seg2; end; end; end; //LabelAnzeige.Caption := FloatToStr(Result); //Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption)); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:17 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