![]() |
Falsche Ausgabe bei Durchschnittsberechnung
Hey Ihr!
Mein Problem ist das, obwohl ich (meiner meinung nach) den code richtig geschrieben habe, eine falsche ausgabe kommt dazu noch als Fehlermeldung! Hier erst mal mein Code:
Delphi-Quellcode:
procedure TForm1.Button18Click(Sender: TObject);
var k: Integer; begin k:=0; if (Label56.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label57.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label58.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label59.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label60.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label61.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label62.Caption>=FloatToStr(1)) Then begin k:= k +1 end; if (Label63.Caption>=FloatToStr(1)) Then begin k:= k +1 end; If (k = 0) Then Label72.Visible := false; Label72.Caption:= FloatToStr(1); If (k >=1) Then Label72.Visible := true; Label72.Caption:= FloatToStr(StrToFloat(Label56.Caption) + StrToFloat (Label57.Caption) + StrToFloat (Label58.Caption) + StrToFloat (Label59.Caption) + StrToFloat (Label60.Caption) + StrToFloat (Label61.Caption) + StrToFloat (Label62.Caption) + StrToFloat (Label63.Caption)); Label72.Caption:= FloatToStr(StrToFloat (Label72.Caption) / k); wenn 'k' am schluss 0 ist (und davon geh ich bei dem versuch aus) soll ausgegeben werden Label72.Caption:= FloatToStr(1). aller dings springt mein prog in die letzte zeile, obwohl 'k' wirklich null ist. ich blick nicht wieso?! Das ganze soll einer Notendurchschnittsberechnung dienen! Thx 4 Cmts Lill Jens :coder2: |
Re: Falsche Ausgabe bei Durchschnittsberechnung
Versuchs mal mit Begin und End :zwinker:
|
Re: Falsche Ausgabe bei Durchschnittsberechnung
Zitat:
|
Re: Falsche Ausgabe bei Durchschnittsberechnung
Als erstes solltest Du Dir mal eine ordentliche Formatierung einfallen lassen.
Als zewites sind die beiden einzigen ifs, bei denen ein Begin..end Block erforderlich ist ohne begin..end block. Als drittes solltest Du nicht eine 1 nach string konvertieren und mit dem Text vergleichen, sondern den Text in ein Float und mit 1 vergleichen (bei Dir wird nämlich ein String-Vergleich durchgeführt und das willste sicher nicht) Als viertes würde ich empfehlen, eben diesen Vergleich in eine weitere Funktion auszulagern, die ein Edit und eine Vergleichszahl übernimmt und einen boolean zurückgibt. Als fünftes würde ich das Gefummel mit den Texten anders machen:
Delphi-Quellcode:
Jetzt kannst Du die Funktion mit jedem Edit rufen und wenn der Wertt >1 dann wird die Anzahl um eins und der Gesamtwert um den Wert erhöht. Wenn Du mit allen durch bist, dann kannst Du mit Label72.Caption:=FloatToStr(fAverage/iCount)) bequem das Ergebnis ausgeben.
Function AddToAverage(_oEdit: TEdit, var _iCount: Integer, var _fAverage: Double): Boolean;
Var fValue: Double; begin try fValue:=StrToFloat(_oEdit.Text); except fValue:=0; end; if (fValue>1) then begin inc(_iCount); _fAverage:=_fAverage+fValue; Result:=True end else Result:=False; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:21 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