![]() |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Kopier deine ganze Unit und poste sie hier. Das Gerate reicht langsam. ;)
MfG freak |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Zitat:
das finde ich eine sehr löbliche Einstellung :-D Darum bekommst Du von mir jetzt auch keinen Code sondern nur einige Denkanstösse ;-)
|
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Dann werf ich einfach auch mal Kot in den Raum(ihh),
Ach ja: größe in cm und Gewicht in Kg angeben!
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var idealhigh, ideallow, hight, weight : double; ausgabe : String; begin weight := StrToFloat(Weight.Text); hight := StrToFloat(Height.Text); if RadioGroup1.ItemIndex = 0 then Begin IdealHigh:= height - 100; IdealHigh:= IdealHigh * 0.97; IdealLow:= height - 100; IdealLow:= IdealLow * 0.93; end else if RadioGroup1.ItemIndex = 1 then Begin IdealHigh:= height - 100; IdealHigh:= IdealHigh * 0.92; IdealLow:= height - 100; IdealLow:= IdealLow * 0.88; end else Begin showmessage('Sie müssen ein Geschlecht wählen'); exit; end; if weight > IdealHigh then ausgabe := 'Sie haben Übergewicht! Gehen sie weniger zu MC Donalds' else if weight < IdealLow then ausgabe := 'Sie haben Untergewicht! Essen sie ruhig was!' else ausgabe := 'Sie haben Idealgewicht, also Spachteln was das Zeug hält!'; Showmessage(ausgabe); end; |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Ahh! Ich habe das Problem gelöst!
Das Problem lag in meiner Berechnung des IdealHigh und IdealLow Wertes, denn in der Form wie ich sie geschrieben hatte. Siehe hier:
Delphi-Quellcode:
Kamen falsche Ergebnisse heraus, d.h. das Idealgewicht lag nur deutlich höher als ich erwartet hatte. Und ich habe es nicht gemerkt, weil ich zum Testen nur Extreme benutzte (z.B. 150 cm auf 1 Kg, oder 1000 Kg). Das Idealgewicht hätte durch diese Fehlberechnung ca. bei 750 KG gelegen (Schätzungsweise).
IdealHigh:= StrToFloat(EHeight.Text) - 100;
IdealHigh:= IdealHigh * 0.92; IdealLow:= StrToFloat(EHeight.Text) - 100; IdealLow:= IdealLow * 0.88; Als ich dies merkte schrieb ich die Berechnung um:
Delphi-Quellcode:
Nun kommen die richtigen Werte heraus! Ich wundere mich aber, warum die alte Schreibweise nicht klappte... Einzige Erklärung die ich mir persönlich geben kann:
IdealHigh:= (StrToFloat(EHeight.Text) - 100) * 0.97;
IdealLow:= (StrToFloat(EHeight.Text) - 100) * 0.93; Der Wert der Variable wurde bei der zweiten Rechnung, nicht wie gewollt um 100 reduziert... Warum auch immer... Vielleicht kann mich ja jmd. aufklären... Aber ich danke euch trotzdem für eure Hilfe, ihr seid echt spitze! |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
:gruebel: Aber was soll das damit zu tun haben, daß die Messages nicht angezeigt werden?
Das verändert ja nur das Ergebnis... Aber jetzt funktioniert alles? |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Komischerweise ja , wie gesagt, ich wundere mich ja selbst o.O
|
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Also jetzt nochmal von vorne. Das hier
Delphi-Quellcode:
bringt dir als Idealgewicht für 150cm 750kg? Das kann doch nicht stimmen. Das, was du daraus gemacht hast, dürfte am Ergebnis der Rechnung nichts ändern. Sicher, daß in deinem Code nicht sonst ein kleiner Fehler war, den du beim Posten hier nicht gemacht hast? :gruebel: Anders kann ich es mir wirklich nicht erklären... Denn wie gesagt, bei mir hat der Code, den ich hier rauskopiert hab, auf Anhieb funktioniert.
IdealHigh:= StrToFloat(EHeight.Text) - 100;
IdealHigh:= IdealHigh * 0.97; IdealLow:= StrToFloat(EHeight.Text) - 100; IdealLow:= IdealLow * 0.83; |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Zitat:
Delphi-Quellcode:
Hier wird nur wenn der ItemIndex = 0 ist das IdealHigh richtig berechnet. Für Itemindex <> 0 werden die 100 ja nicht abgezogen.
if RGGender.ItemIndex = 0 then // einfach nicht beachten ist nur zur Geschlechtsfeststellung//
IdealHigh:= StrToFloat(EHeight.Text) - 100; IdealHigh:= IdealHigh * 0.97; IdealLow:= StrToFloat(EHeight.Text) - 100; IdealLow:= IdealLow * 0.93; |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
Und nochmal: So wie ich das sehe ist der erste Codeschnipsel unvollständig, denn bei seinem zweiten Code passt das ja.
Allerdings muß ich dir recht geben, das sieht wirklich so aus, als obs das wäre. @zwock: Wie sieht denn dein Code wirklich aus? |
Re: Problem mit 2 Bedingungen in einer IF Schleife!
In der Berechnung steckt übrigens noch ein logischer Fehler: Die Toleranz beim maximal zulässigen Idealgewicht muss addiert werden, nicht abgezogen.
Also nicht
Delphi-Quellcode:
Sondern
IdealHigh:= IdealHigh * 0.97;
Delphi-Quellcode:
Wenn z.B. das maximale Idealgewicht 80 Kg ist, dann würde nach der ersten Methode Idealgewicht nur bis 77,6 gelten. Es sollte aber doch wohl 82,4 sein!
IdealHigh:= IdealHigh * 1.03;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:58 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