Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Prüfen, ob eine Zahl in einem Bereich vorhanden ist


Andidreas - So 05.08.07 09:14
Titel: Prüfen, ob eine Zahl in einem Bereich vorhanden ist
Hallo
Wie kann ich prüfen, ob eine Zahl innerhalb von 10115-14199 enthalten ist?

Dank im voraus
Andidreas


Moderiert von user profile iconGausi: Topic aus VCL (Visual Component Library) verschoben am So 05.08.2007 um 10:42


Hobby-Programmierer - So 05.08.07 09:19

Moin ...
kann das zwar jetzt net prüfen, aber sollte nicht folgendes funktionieren

Delphi-Quelltext
1:
if x in [10115..14199then                    

LG Mario


Gausi - So 05.08.07 09:40

Das wird afaik nicht funktionieren, weil Sets nicht so groß sein können. Aber so gehts auf jeden Fall:


Delphi-Quelltext
1:
 if (aZahl >= 10115AND (aZahl <= 14199then Showmessage('Sie haben gewonnen!');                    


Andidreas - So 05.08.07 09:48

Danke Gausi. Funktioniert bestens.


BenBE - So 05.08.07 10:05

@Gausi: Wird auch nicht funktionieren, da die Grenzen von Sets auf 256 Elemente begrenz sind und Bit-Indizes als Byte behandelt werden. D.h. es wird immer nur das LSB einer Zahl betrachtet, womit die Abfrage


Delphi-Quelltext
1:
If X in [256..511Then Halt;                    


immer False ergeben würde, während


Delphi-Quelltext
1:
If X in [0..255Then Halt;                    


immer True liefert ;-)

Wenn man weiß, das X nie größer als 255 wird ist diese Abfrage zwar legitim, aber dennoch immer langsamer als Gausi's Version.


Gausi - So 05.08.07 10:14

Also das:

Delphi-Quelltext
1:
If X in [256..511Then Halt;                    

geht bei mir eh nicht durch den Compiler:
Zitat:
[Fehler] Unit1.pas(29): Konstantenausdruck verletzt untere Grenzen
Ob das nach Delphi7 geändert wurde, weiß ich nicht.


Andidreas - So 05.08.07 10:16

Bekomme genau die gleiche Fehlermeldung.


Biergeneral - Fr 10.08.07 12:00

Sonst gibts in der Math unit auch noch
InRange(Value, Min, Max) : Boolean
Aber da wird vermutlich auch nichts anderes als (Value > Min) and (Value < Max) drinstehen ;)


mkinzler - Fr 10.08.07 12:02

Zitat:
(Value > Max)
eher (Value < Max) oder besser (Value >= Min) and (Value <= Max)


Biergeneral - Fr 10.08.07 22:24

Stand da doch :D *hust*