Delphi-PRAXiS
Seite 4 von 8   « Erste     234 56     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 11:39

Re: Taschenrechner Ausgabe
 
Also zuerst kommt bei mir ne Warnung
[DCC Warnung] Calculator_Main.PAS(88): W1035 Rückgabewert der Funktion 'TFormTR.BerechneTerm' könnte undefiniert sein

danach starte ich das Programm was einwandfrei funkioniert, wenn ich aber ne Multiplikation mache kommt ne fehlermeldung.
[DCC Warnung] Calculator_Main.PAS(88): W1035 Rückgabewert der Funktion 'TFormTR.BerechneTerm' könnte undefiniert sein.

Und wenn du mir erklären würdest wie du das gemacht hast wäre ich sehr dankbar..

P.S: Alle anderen Operanden funktionieren außer die Multiplikation

Satty67 5. Jun 2009 11:43

Re: Taschenrechner Ausgabe
 
Welche Version von BerechneTerm? Die in Post #27 von mir oder die in Post #29 von Klaus01.

Lies im Thread bitte alle Antworten, nach Deiner letzten Frage. Wenn Du die Hälfe der Antworten hier ignorierst, macht es für mcih keinen Sinn, überhaupt zu Antworten

Klaus01 5. Jun 2009 11:45

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von safak67
Also zuerst kommt bei mir ne Warnung
[DCC Warnung] Calculator_Main.PAS(88): W1035 Rückgabewert der Funktion 'TFormTR.BerechneTerm' könnte undefiniert sein

danach starte ich das Programm was einwandfrei funkioniert, wenn ich aber ne Multiplikation mache kommt ne fehlermeldung.
[DCC Warnung] Calculator_Main.PAS(88): W1035 Rückgabewert der Funktion 'TFormTR.BerechneTerm' könnte undefiniert sein.

Und wenn du mir erklären würdest wie du das gemacht hast wäre ich sehr dankbar..

P.S: Alle anderen Operanden funktionieren außer die Multiplikation

Welche Fehlermeldung kommt bei der Multiplikation=

Das as Du angegeben hast sind Warnungen, sie besagen das der result Wert von BerechneTerm undefiniert sein könnte.
Das kannst Du beheben indem Du zu Anfang der Routine ein result := 0 einfügst.

Benutzt Du auch das 'x' zum Multiplizieren oder das '*'.
In Deiner Routine solltest Du das x verwenden in der meinigen das *.

[edit] Kommetare im Quelltext eingefügt [edit]

Grüße
Klaus

safak67 5. Jun 2009 11:50

Re: Taschenrechner Ausgabe
 
dein letzten beitrag habe ich erst jetzt gelesen sorry..

also ich habe deine(satty67) Version benutzt, jetzt funktioniert das auch. Aber da sind auch rechenfehler drin, ich bin mir nicht sicher aber wenn ich mind. 3 operanden eingebe macht er manchmal fehler.. höchstwahrscheinlich macht er die fehler bei der division.. ich bin mir aber nicht sicher..

Satty67 5. Jun 2009 11:52

Re: Taschenrechner Ausgabe
 
Beschriftung des SpeedButton für Multiplikation muss natürlich identisch sein. Also überall "*" oder überall "x" verwenden.

Mit überall ist Caption von SpeedButton und die Zeichen in BerechneTerm gemeint.

safak67 5. Jun 2009 11:55

Re: Taschenrechner Ausgabe
 
das problem ist nicht bei der multiplikation jetzt sondern bei der division..
wenn ich z.B 12-3+1 eintippe gibt er 8 aus. der verwandelt iwi das + in minus um oder noch ein beispiel 18 -4+3 gibt er 11 aus.

Satty67 5. Jun 2009 11:59

Re: Taschenrechner Ausgabe
 
Ja, das Problem hat irgendwo schon mal jemand angesprochen. Das wäre dann auch schon die nächste Baustelle:

Die Reihenfolge der berechneten Terme stimmt nicht mit den mathematischen Regeln überein.

Klaus01 5. Jun 2009 12:01

Re: Taschenrechner Ausgabe
 
Zitat:

Zitat von safak67
das problem ist nicht bei der multiplikation jetzt sondern bei der division..
wenn ich z.B 12-3+1 eintippe gibt er 8 aus. der verwandelt iwi das + in minus um oder noch ein beispiel 18 -4+3 gibt er 11 aus.

weil Deine (und auch meine) Routine stumpf von links nach rechts rechnet.
Bespiel
12 -3 = 9
9 +1 = 10

12 - (3+1) =
12 -4 = 8

oder
18 - 4 +3
18 - 4 = 14
14 +3 = 17

18 - (4+3) =
18 - 7 = 11

Grüße
Klaus

safak67 5. Jun 2009 12:18

Re: Taschenrechner Ausgabe
 
hmm wieder so´ne scheiße.. satty67 kannst du dein teil kommentieren was du da gemacht hast, wenn es keine umstände macht..

das mit der mathematischen müssen wir nochmal anschauen

HenKst 5. Jun 2009 12:30

Re: Taschenrechner Ausgabe
 
Dieser spezielle Fehler liegt nicht an der Reihenfolge sondern daran das die Schleife weiterläuft, auch wenn ein Operator gefunden wird.

Wenn man nach dem case ein break einfügt kommt bei 12-3+1 auch 10 raus :)
Delphi-Quellcode:
case index of
  0: Result := Seg1 * Seg2;
  1: Result := Seg1 / Seg2;
  2: Result := Seg1 + Seg2;
  3: Result := Seg1 - Seg2;
end;
break;
Aber 1+1*2 ist 4 ;)
Also stimmt die Reihenfolge auch nicht.


(wohoo endlich mal wieder delphi geschrieben, c geht mir aufn keks...)


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:53 Uhr.
Seite 4 von 8   « Erste     234 56     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