Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Variablen-Abfrage in Integerbereich (https://www.delphipraxis.net/40515-variablen-abfrage-integerbereich.html)

ThorZten 16. Feb 2005 22:58


Variablen-Abfrage in Integerbereich
 
Guten Abend!
Habe folgendes Problem:
Ich möchte eine Integer-Abfrage machen die wie folgt aussieht:

Delphi-Quellcode:
var zahl:Integer;

...
//zahl wird mehrfach modifiziert
if zahl in [0..50] then ...
if zahl in [350..400] then ...
Die erste Abfrage bereitet keine Probleme, bei der zweiten meckert aber Delphi mit "Constant expression violates subrange bounds", also sprenge ich die Grenzen mit dieser Abfrage.

Meine Frage: wie umschiffe ich dieses Problem?
Muss ich wirklich jede Zahl so umständlich abfragen:
Delphi-Quellcode:
if (zahl=350)or(zahl=351)or(zahl=352)or...
oder gibt es da eine schönere Lösung?

Danke schon einmal

jim_raynor 16. Feb 2005 22:59

Re: Variablen-Abfrage in Integerbereich
 
Wie wärs mit:

Delphi-Quellcode:
if (zahl>=350) and (Zahl<=400) then

ThorZten 16. Feb 2005 23:08

Re: Variablen-Abfrage in Integerbereich
 
Okay, die Antwort war jetzt fies! ;-)
So einfach kann es manchmal sein... Danke

Gibt es noch eine andere Lösung, die mein Gesuch mit einer komplizierter aussehenden Lösung belohnt?
Kann man evt. einen Zahlenbereich definieren, den man mit der Variable abgleichen kann oder so?

Ansonsten reicht das schon auch.
Danke

Binärbaum 16. Feb 2005 23:10

Re: Variablen-Abfrage in Integerbereich
 
Statt
Delphi-Quellcode:
var zahl:Integer;

...
//zahl wird mehrfach modifiziert
if zahl in [0..50] then ...
if zahl in [350..400] then ...
kann man das mit case lösen:
Delphi-Quellcode:
var zahl:Integer;
...
case zahl of
 0..50:   ...
 350..450: ...
 //usw.
end;
MfG
Binärbaum

ThorZten 16. Feb 2005 23:18

Re: Variablen-Abfrage in Integerbereich
 
Das habe ich auch schon überlegt, aber da stoße ich mit folgender Überlegung an die Grenzen, nämlich, wenn ich zwei Variablen abfragen möchte: (Koordinaten zB)

Delphi-Quellcode:
var X,Y: integer;

if (X in [0..10]) and (Y[0..10]) then ...
Da müsste dann wohl eine doppelt-verschachtelte Abfrage her. So was wie:
Delphi-Quellcode:
case X of
 0..10: if Y in[0..10] then ...
end;
Mit höheren Werten müsste ich dann wie oben vorgeschlagen wie folgt abfragen:
Delphi-Quellcode:
 if (X>=0)and(X<=400)and(Y>=0)an(Y<=400) then ...

Sprint 16. Feb 2005 23:28

Re: Variablen-Abfrage in Integerbereich
 
Zitat:

Zitat von ThorZten
Da müsste dann wohl eine doppelt-verschachtelte Abfrage her.

Delphi-Quellcode:
  case X of
    0..10:
      case Y of
        0..10: ShowMessage('X und Y haben den richtigen Wert');
      end;
  end;
Wie du siehst, gibt es verschiedene Möglichkeiten den Wertebereich zu überprüfen. Entscheide dich für den, den du am besten Lesen kannst.

ThorZten 16. Feb 2005 23:47

Re: Variablen-Abfrage in Integerbereich
 
Alles klar, Dank an alle.


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:09 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