Delphi-PRAXiS
Seite 2 von 8     12 34     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Taschenrechner Ausgabe (https://www.delphipraxis.net/135126-taschenrechner-ausgabe.html)

safak67 5. Jun 2009 08:21

Re: Taschenrechner Ausgabe
 
Delphi-Quellcode:
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;
also wie ich das ergebnis ausgebe weiß ich auch noch nicht..

Satty67 5. Jun 2009 08:44

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:
// Aufruf der rekursiven Methode
BerechneTerm(LabelAnzeige.Caption);
// Danach Anzeige des Ergebnis
LabelAnzeige.Caption := FloatToStr(Result);
innerhalb der function BerechneTerm läuft was falsch
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:

Zitat von safak67
Ich bin halt noch ein Noob und ich will das auch lernen aber leider geht das nicht in zwei tagen.

Hier läuft im Forum etwas schief. Das es Leute gibt, die von Delphi/Pascal so wenig Ahnung haben, das auch offensichtliche Lösungsvorschläge nicht verstanden werden, wird nicht akzeptiert. Lebe einfach mir der Art der Antworten, das wird erst besser, wenn Du besser in Delphi wirst ;)

safak67 5. Jun 2009 08:57

Re: Taschenrechner Ausgabe
 
Delphi-Quellcode:
Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption));
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..

nimmersattXD 5. Jun 2009 09:06

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))

Blackheart 5. Jun 2009 09:14

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.
Funktionen

safak67 5. Jun 2009 09:27

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?

jaenicke 5. Jun 2009 09:29

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von safak67
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?

Den Quelltext dafür hat dir Satty67 bereits gepostet...
http://www.delphipraxis.net/internal...044968#1044968

Sinnvoll wäre es wie dort gezeigt die Funktion aufzurufen und danach außerhalb den Label mit dem Rückgabewert zu beschriften.

nimmersattXD 5. Jun 2009 09:31

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));

Satty67 5. Jun 2009 09:41

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von jaenicke
Sinnvoll wäre es wie dort gezeigt die Funktion aufzurufen und danach außerhalb den Label mit dem Rückgabewert zu beschriften.

Ja, Ich hab es leider wieder unglücklich "zerstückelt", was ihn wohl leider etwas überforderte, mangels Verständnis

Außerhalb steht (im ButtonClick von "=" möglicherweise)
Delphi-Quellcode:
LabelAnzeige.Caption := FloatToStr(BerechneTerm(LabelAnzeige.Caption));
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.

safak67 5. Jun 2009 09:49

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.
Seite 2 von 8     12 34     Letzte »    

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