AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

Ein Thema von SearchBot · begonnen am 28. Aug 2019 · letzter Beitrag vom 3. Sep 2019
Antwort Antwort
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
232 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 28. Aug 2019, 11:52
Delphi-Version: 10.1 Berlin
Hallo,

ich habe gerade ein für mich unlogisches Problem (und ich kann nicht danach suchen, weil "in" und "if" zu kurz für die Suche sind).

Meine Situation im angehaltenen Programm:

Code:
xPos=527
yPos=98

xMin=238
xMax=709

yMin=26
yMax=551
Ich möchte, daß nur in einem Bereich eine Aktion erfolgt, also habe ich sie so eingeklammert:


Delphi-Quellcode:
if (xPos in [xMin..xMax]) and (yPos in [yMin..yMax]) then begin
//Code
end;

Obwohl die obigen Werte xPos und yPos genau in diesen Bereich passen und somit beide Abfragen aus meiner Sicht true sind, wird der Code übersprungen.

Prüfe ich die Werte im angehaltenen Zustand in der IDE und zeige mit der Maus auf yMax, zeigt mir der Hint "yMin..yMax | 26" an, statt den yMax-Wert; auch die Auswerte-Funktion kommt mit dem "Zahl in [a..b]" nicht klar.

Ist das ein Bug?
Muss ich das immer umständlich ausführlich schreiben (if (posX>=xMin) and (posX<=xMax) and...)? Oder gibt's da eine Syntax, die korrekt funktioniert, wie ich es gehofft hatte?
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.197 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 28. Aug 2019, 12:37
"in" lässt in den Klammern nur 256 Werte zu.
Also 0..255 oder 100..355 etc.
Peter
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.224 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 28. Aug 2019, 12:38
Nutze InRange aus der Math-Unit...
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.328 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 28. Aug 2019, 12:44
System.Types.PtInRect()
  Mit Zitat antworten Zitat
Michael II

Registriert seit: 1. Dez 2012
Ort: CH BE Eriswil
585 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 28. Aug 2019, 12:46
Nutze ptInRect. Damit kannst du checken, ob ein Punkt innerhalb eines Rechtecks liegt.

Beispiele:

Delphi-Quellcode:
  showmessage( ptInRect( Rect( 238,26,709,551 ), Point( 240,30 ) ).ToInteger.ToString );
  showmessage( ptInRect( Rect( 238,26,709,551 ), Point( 229,400 ) ).ToInteger.ToString );
Michael Gasser
  Mit Zitat antworten Zitat
SearchBot

Registriert seit: 27. Jun 2004
Ort: N-W vom Bodensee
232 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 28. Aug 2019, 13:23
Ah cool.

"in" lässt in den Klammern nur 256 Werte zu.
Also 0..255 oder 100..355 etc.
Das hab ich nicht gewusst. Dankeschön.

Nutze InRange aus der Math-Unit...
Oh, das ist gut - ich sollte mich mehr mit dieser Unit beschäftigen

Nutze ptInRect. Damit kannst du checken, ob ein Punkt innerhalb eines Rechtecks liegt.
Auch für diesen Tipp möchte ich mich bedanken.

Heute habe ich wieder was dazu gelernt
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.658 Beiträge
 
Delphi 7 Personal
 
#7

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 29. Aug 2019, 09:59
Und warum nichtif (xpos>=xmin) and (xpos<=xmax) then ....... Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
stifflersmom

Registriert seit: 8. Dez 2005
Ort: 24994 Holt
322 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 29. Aug 2019, 15:08
Und warum nichtif (xpos>=xmin) and (xpos<=xmax) then ....... Gruß
K-H
Wäre ja möglich, dass die Vergleichswerte trotzdem gewisse Auflagen erfüllen müssen. So darf vielleicht xmin nur 112 oder 204 oder 314... sein
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
435 Beiträge
 
Delphi 10.3 Rio
 
#9

AW: Bug bei Auswertung: if (Zahl in [min..max]) then .. ??

  Alt 3. Sep 2019, 18:00
Oder du verwendest die CustomSets library. Die unterstützt Sets von jedem numerischen ganzzahligen Typen und nicht nur Byte.
Dennis
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 +2. Es ist jetzt 02:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2021, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf