Delphi-PRAXiS
Seite 1 von 8  1 23     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 07:31


Taschenrechner Ausgabe
 
Hallo erstmal,

ich habe Probleme mit der Ausgabe von dem Taschenrechner. Ich kriege iwi keine Ausgabe. Vllt kann einer helfen

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 := StrToFloat(FloatToStr(BerechneTerm(LabelAnzeige.Caption)));

end;

sx2008 5. Jun 2009 07:40

Re: Taschenrechner Ausgabe
 
Vielleicht sollest du einfach deinen eigenen Sourcecode gründlich lesen.
Hast du einen Drucker? Dann bitte drucken und lesen.
Hier ein kleiner verkürzter Ausschnitt:
Delphi-Quellcode:
function TFormTR.BerechneTerm(Formular: string): Double;
...
begin
  Formular := LabelAnzeige.Caption; // ***
Die markierte Zeile ist ja wohl "Quatsch" - wozu übergibst du der Funktion den Parameter "Formular",
wenn dieser Parameter sogleich in der 1. Zeile überbügelt wird? :wall:

Sharky 5. Jun 2009 07:45

Re: Taschenrechner Ausgabe
 
Hai safak67,

schaue Dir auch mal diese Codezeile genau an:

Delphi-Quellcode:
Result := StrToFloat(FloatToStr(BerechneTerm(LabelAnzeige.Caption)));
Dir müsste hier sofort etwas auffallen.

safak67 5. Jun 2009 07:49

Re: Taschenrechner Ausgabe
 
Mit dem linken Teil ist was nicht i.O

Jürgen Thomas 5. Jun 2009 07:54

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von safak67
Mit dem linken Teil ist was nicht i.O

Links ist da, wo der Daumen rechts ist. Schau aber einmal in die Mitte dieser Code-Zeile: was wird zuletzt gemacht, was wird unmittelbar davor gemacht, und was bedeutet beides zusammen?

Anderes Beispiel: Du schläfst, dann stehst du auf, dann schläfst du wieder ein. Was hat sich dadurch geändert?

Jürgen

PS. Ich wundere mich schon über die Geduld, mit der du über Tage hinweg immer wieder die gleichen Fragen stellst und trotzdem Antworten bekommst.

PS2. Du willst das Ergebnis ausgeben. Wo und wie denn bitte? Wenn du das einmal angeben würdest, würdest du vielleicht auf eine der vielen möglichen Lösungen kommen. Bisher schreibst du aber nur, wie gerechnet werden soll.

Sharky 5. Jun 2009 07:56

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von safak67
Mit dem linken Teil ist was nicht i.O

Das meine ich nicht. Schau doch mal genau hin.
Hier mal der Ablauf dieser Zeile:

1. Berechne den Term aus LabelAnzeige.Caption
2. Wandele dieses Fliesskommawert in einen String um
3. Wandele diesen String in einen Fliesskommawert um

jaenicke 5. Jun 2009 08:01

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von Jürgen Thomas
PS2. Du willst das Ergebnis ausgeben. Wo und wie denn bitte? Wenn du das einmal angeben würdest, würdest du vielleicht auf eine der vielen möglichen Lösungen kommen. Bisher schreibst du aber nur, wie gerechnet werden soll.

Hier steht der Quelltext, und auch meine Antwort darauf...
http://www.delphi-forum.de/viewtopic...=565525#565525
Zitat:

Zitat von jaenicke
Zweitens musst du BerechneTerm auch irgendwo benutzen, es nur hinzuschreiben nutzt eben nichts. Und den Rückgabewert kannst du z.B. mit FloatToStr in einen String umwandeln und in ein Label oder in eine ShowMessage packen.

Leider kam darauf keine Antwort... :roll:

Klaus01 5. Jun 2009 08:02

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von Sharky
Zitat:

Zitat von safak67
Mit dem linken Teil ist was nicht i.O

Das meine ich nicht. Schau doch mal genau hin.
Hier mal der Ablauf dieser Zeile:

1. Berechne den Term aus LabelAnzeige.Caption
2. Wandele dieses Fliesskommawert in einen String um
3. Wandele diesen String in einen Fliesskommawert um

Das sollst Du doch nicht in einem Rutsch machen.

Ausgeben willst Du das Ergebnis (wahrscheinlich) als String.
Also sollte Result vom Typ String bzw. AnsiString sein.

Delphi-Quellcode:
Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption));
Dein BerechneTerm liefert ein Double zurück, diesen Floatwert musst Du zu
einem String wandeln.

Grüße
Klaus

safak67 5. Jun 2009 08:05

Re: Taschenrechner Ausgabe
 
Also eines wieder vorweg.. Ich bin auch daran begeistert soviele Fragen zu stellen. Aber ich habe vorher noch nie Delphi gemacht, ich bin auch grad dran die Grundlagen nachzuholen aber es ist nicht meine Schuld das ich von heue auf morgen ein Taschenrechner basteln muss..
Ich bin halt noch ein Noob und ich will das auch lernen aber leider geht das nicht in zwei tagen.

Das mit
Delphi-Quellcode:
Result := FloatToStr(BerechneTerm(LabelAnzeige.Caption));
hatte ich auch am Anfang aber dann kam ne fehlermedlung,
[DCC Fehler] Calculator_Main.PAS(79): E2010 Inkompatible Typen: 'Double' und 'string'

Klaus01 5. Jun 2009 08:16

Re: Taschenrechner Ausgabe
 
Also anscheinend ist der Typ von Result ein Double/Float.

Mit diesem Typ kannst Du aber nichts ausgeben, ohne vorher
den Typen konvertiert zu haben.

Also zeige mal wie und wo Du das Ergebnis
ausgeben willst.

Grüße
Klaus


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:28 Uhr.
Seite 1 von 8  1 23     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz