AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

if Anweisung?

Ein Thema von mat72 · begonnen am 27. Mär 2012 · letzter Beitrag vom 27. Mär 2012
Antwort Antwort
mat72

Registriert seit: 15. Mär 2012
35 Beiträge
 
#1

if Anweisung?

  Alt 27. Mär 2012, 12:43
Delphi-Version: 5
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:
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;
Danke für eure Hilfe.
Gruss
Matthias
  Mit Zitat antworten Zitat
Jens01

Registriert seit: 14. Apr 2009
673 Beiträge
 
#2

AW: if Anweisung?

  Alt 27. Mär 2012, 12:49
Die Frage ist ja, was passiert nicht so wie es soll.
Bei diesen Floatvariablen sollte/ muß man immer mit CompareValue vergleichen.
Achtung: Bin kein Informatiker sondern komme vom Bau.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.861 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: if Anweisung?

  Alt 27. Mär 2012, 12:59
das Problem besteht aber eher beim Prüfen auf Gleichheit, bei < oder > sollte das keine Rolle spielen
Markus Kinzler
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#4

AW: if Anweisung?

  Alt 27. Mär 2012, 13:00
Bei diesen Floatvariablen sollte/ muß man immer mit CompareValue vergleichen.
Das gilt weitestgehend nur bei Prüfung auf Gleichheit. Bei Relationen ist das unkritisch, so lange den Intervallgrenzen keine extra besonders wichtige Bedeutung zukommt. Vom Statement her schaut das so weit richtig aus. Was steht denn im Label, und mit was für Werten hast du getestet?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#5

AW: if Anweisung?

  Alt 27. Mär 2012, 13:04
In deinem Fall ist aber einfach die Anweisung falsch:
if not((gain>0.85) and (gain<1.15)) then sollte richtig sein
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: if Anweisung?

  Alt 27. Mär 2012, 13:11
Geht doch auch einfacher:
Delphi-Quellcode:
if (gain < 0.85) or (gain > 1.15) then
  // ...
PS: gain ist aber hoffentlich keine globale Variable?

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;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)

Geändert von s.h.a.r.k (27. Mär 2012 um 13:14 Uhr)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#7

AW: if Anweisung?

  Alt 27. Mär 2012, 13:16
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
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)

Geändert von Medium (27. Mär 2012 um 13:19 Uhr)
  Mit Zitat antworten Zitat
v2afrank

Registriert seit: 9. Mai 2005
Ort: Bocholt
575 Beiträge
 
Delphi XE2 Professional
 
#8

AW: if Anweisung?

  Alt 27. Mär 2012, 13:19
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
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#9

AW: if Anweisung?

  Alt 27. Mär 2012, 13:20
Siehe Edit. Mit ist das "not" bei dir auch durchgegangen, ich dachte du hättest nur die Operanden getauscht. Ich brauch Futter...
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
mat72

Registriert seit: 15. Mär 2012
35 Beiträge
 
#10

AW: if Anweisung?

  Alt 27. Mär 2012, 13:23
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:03 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz