![]() |
Delphi-Version: 5
if Anweisung?
Hallo,
ich wollte in einer Procedure einen Wert errechnen und wenn die Bedingung (0.85<Wert<1.15) nicht erfüllt ist, sollte eine Meldung kommen. Leider funktioniert es nicht so, wie ich es mir gedacht habe. Stimmt da etwas in der Anweisung nicht?
Delphi-Quellcode:
Danke für eure Hilfe.
procedure TForm7.Button1Click(Sender: TObject);
begin gain:=(foc1-foc2)/100; Label13.Caption := FloatToStrF(gain, ffNumber, 8, 3); if (0.85<gain) and (gain<1.15) then ShowMessage('Please Enter the Calculated Offset!'); end; Gruss Matthias |
AW: if Anweisung?
Die Frage ist ja, was passiert nicht so wie es soll.
Bei diesen Floatvariablen sollte/ muß man immer mit CompareValue vergleichen. |
AW: if Anweisung?
das Problem besteht aber eher beim Prüfen auf Gleichheit, bei < oder > sollte das keine Rolle spielen
|
AW: if Anweisung?
Zitat:
|
AW: if Anweisung?
In deinem Fall ist aber einfach die Anweisung falsch:
Delphi-Quellcode:
sollte richtig sein
if not((gain>0.85) and (gain<1.15)) then
|
AW: if Anweisung?
Geht doch auch einfacher:
Delphi-Quellcode:
PS: gain ist aber hoffentlich keine globale Variable?
if (gain < 0.85) or (gain > 1.15) then
// ... PPS: Etwas besser lesbar :)
Delphi-Quellcode:
if IsValidGain(gain) then
// ... function TForm7.IsValidGain(const AGain: Float): Boolean; // private method const MIN_VALUE = 0.85; MAX_VALUE = 1.15; begin Result := (AGain > MIN_VALUE) and (AGain < MAX_VALUE); end; |
AW: if Anweisung?
Seine Abfrage ist korrekt, schaut mal die Stellung von "gain" und den Konstanten an. Die Frage ist jetzt nur, ob die Eingabe innerhalb oder ausserhalb des Intervalls als richtig angesehen werden soll, womit die Sache mit der Negierung interessant ist.
Edit: Ah, jetzt nach noch mal lesen ja. Negieren und gut ist. Ups :) |
AW: if Anweisung?
Die Abfrage ist nicht korrekt.
Seine Bedingung lautet wenn die Bedingung (0.85<Wert<1.15) nichterfüllt ist. Er hat auf die Bedingung (0.85<Wert<1.15) abgefragt |
AW: if Anweisung?
Siehe Edit. Mit ist das "not" bei dir auch durchgegangen, ich dachte du hättest nur die Operanden getauscht. Ich brauch Futter...
|
AW: if Anweisung?
Danke für euere Hilfe,
manchmal sieht man den wald vor lauter Bäumen nicht. Die Meldung sollte kommen, wenn der Wert nicht die Bedingung erfüllt. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 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