![]() |
AW: Tarifrechner
Auf der Konsole wird stardardmäßig der Dezimalpunkt als Dezimaltrenner verwendet (liegt an der amerikanischen Herkunft des BS).
Dein Delphi meckert vermutlich immer noch, oder? Zur Abprüfung, ob der eingegebene Wert kleiner oder gleich Null ist, bau eine entsprechende IF-Clause und weise dem Result ein entsprechendes Ergebnis zu. Dieses prüfst Du dann in der Procedure Abauf ab und verzweigst ggf. in eine Procedure ausgabe3, die dann den Hinweis enthält, daß Pakete ohne Gewicht oder mit einem negativen Gewicht Schwachfug sind. |
AW: Tarifrechner
Zitat:
Was wird hier wohl gerechnet?
Delphi-Quellcode:
So wird es dann wohl verständlicher, wo der aktuelle Funktions-Wert und wo ein neuer Funktionsaufruf lauern.
var BöseGlobaleVariable: Integer;
function SinnloseFunktion: Integer; begin if BöseGlobaleVariable > 0 then begin BöseGlobaleVariable := BöseGlobaleVariable - 1; SinnloseFunktion := SinnloseFunktion + 2; SinnloseFunktion := SinnloseFunktion + SinnloseFunktion - 1; end else SinnloseFunktion := 0; end; BöseGlobaleVariable := 10; ShowMessage(IntToStr(SinnloseFunktion));
Delphi-Quellcode:
Aber eigentlich wollte ich dieses haben. war allerdings mit den "Funktionsnamen als Result" garnicht machbar ist.
function SinnloseFunktion: Integer;
begin if BöseGlobaleVariable > 0 then begin Dec(BöseGlobaleVariable); Result := SinnloseFunktion + 2; Result := SinnloseFunktion + SinnloseFunktion - 1; end else Result := 0; end;
Delphi-Quellcode:
OK, außer man führt das komische Ding, mit der unnötigen Variable wieder ein, aber auch da macht sich das Result veständlicher.
function SinnloseFunktion: Integer;
begin if BöseGlobaleVariable > 0 then begin Dec(BöseGlobaleVariable); Result := SinnloseFunktion + 2; Result := Result + SinnloseFunktion - 1; end else Result := 0; end;
Delphi-Quellcode:
Wobei man hier das Result ja direkt verwenden und sich deshalb eben diese zusätzliche Variable ersparen kann.
function SinnloseFunktion: Integer;
var i: Integer; begin if BöseGlobaleVariable > 0 then begin Dec(BöseGlobaleVariable); i := i + SinnloseFunktion - 1; end else i := 0; SinnloseFunktion := i; // Result := i; end; PS: So, ich klaue dir jetzt mal das Refactoring (falls du sowas besitzt) und nun bennene mal diese Funktionen um. Wo wirst du wohl weniger Arbeit haben? PSS: Wenn es zufällig eine gleichnamige Funktion, mit passender Signatur, in einer anderen Unit gibt (die oben in Uses mit drin steht) und du vergißt auch nur einen Namen umzubenennen, dann war's daß, weil den Fehler suchst du erstmal eine Weile. |
AW: Tarifrechner
Zitat:
Zitat:
Zitat:
EDIT: doch..ich glaub ich habs verstanden, ich probiers mal eben ^^ EDIT2:
Delphi-Quellcode:
RICHTIG? :?: Erstelle ich jetzt Ausgabe 3, aber wie verweiße ich dann darauf?
function tarif(gewicht:real):byte;
begin if gewicht>0 then begin if (gewicht<=10) then tarif:=1 else if (gewicht<=20) then tarif:=2 else if (gewicht>20) and (gewicht<=100) then tarif:=3 else tarif:=0 end else result:=0; |
AW: Tarifrechner
In ablauf ist der Rückgabewert von tarif 0, falls Das Gewicht < 0 oder > 100. Somit müsstest du dem < 0 einen anderen Tarif zuordnen um ihn von über 100 zu unterscheiden. Das dann wie gehabt prüfen. Statt tarif(gw) <> 0 zum Beispiel: t = tarif(gw); if t = 1 then ... else if t = ... ;)
Edit: Bzw. die Eingabe vor der Berechnung prüfen. |
AW: Tarifrechner
Okee, das habe ich mit ner Case of - Anweisung gelöst ..thx :wink:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:52 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