Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Abfrage ob in Wertebereich


Smartie - Mi 04.05.05 09:23
Titel: Abfrage ob in Wertebereich
Hallo,

ich möchte eine Sicherheitsabfrage machen, ob eine Zahl in einem bestimmten Wertebereich ist.

dieser Wertebereich wird in einem INI als String folgendermaßen dargestellt:
-99.999..99.999 oder 0..1 oder 13..57 etc. pp.

Kann ich meinem Compi irgendwie klar machen "wenn a nicht in [x], so tue dies und jenes"
(x ist in diesem Fall der String mit -99.999..99.999 oder 0..1 oder 13..57 etc. pp.)

Oder muß ich da ne komplett andere Lösung finden, doer hat irgendjemand eine Idee?

Danke und Lieben Gruß

Smartie


Blackheart - Mi 04.05.05 09:31

Speicher die Werte doch gleich als Integer und überprüf sie
dann. if Wert <> als then ...


sunspeed - Mi 04.05.05 09:34

Hallo,

warum INI? Leg den Wert doch als Integer in der Registry ab, auch nich optimal aber immerhin tust dir leichter.

Am einfachsten is wenn du prüfst:

Delphi-Quelltext
1:
2:
3:
4:
if (a < -99999or (a > 99999then //Prüfen ob Werte ausserhalb bereich, wenn ja tu was
begin
 //... do something
end;


die Werte kannst natürlich auch durch Variablen (in deinem Fall die Werte aus der INI oder Registry) ersetzen.

Gruß Hoffe geholfen zu haben.


sunspeed - Mi 04.05.05 09:35

Hallo,

warum INI? Leg den Wert doch als Integer in der Registry ab, auch nich optimal aber immerhin tust dir leichter.

Am einfachsten is wenn du prüfst:

Delphi-Quelltext
1:
2:
3:
4:
if (a < -99999or (a > 99999then //Prüfen ob Werte ausserhalb bereich, wenn ja tu was
begin
 //... do something
end;


die Werte kannst natürlich auch durch Variablen (in deinem Fall die Werte aus der INI oder Registry) ersetzen.

Gruß Hoffe geholfen zu haben.


jasocul - Mi 04.05.05 09:35

Das geht so nicht.
Du solltest einen anderen Ansatz wählen:
1. in der INI speicherst du pro Bereich zwei Werte (Maximum und Minimum). Und bitte nicht als String.
2. Kannst du dann eine ganze einfache If-Abfrage machen:

Delphi-Quelltext
1:
if (Wert >= Bereich1Minimum) and (Wert <= Bereich1Maximum) then ....                    


Smartie - Mi 04.05.05 09:42

user profile iconjasocul hat folgendes geschrieben:
Das geht so nicht.
Du solltest einen anderen Ansatz wählen:
1. in der INI speicherst du pro Bereich zwei Werte (Maximum und Minimum). Und bitte nicht als String.
2. Kannst du dann eine ganze einfache If-Abfrage machen:

Delphi-Quelltext
1:
if (Wert >= Bereich1Minimum) and (Wert <= Bereich1Maximum) then ....                    


gut, danke. Hab ich so in der Art auch schon gedacht, muß ich halt meien INI umschmeißen, und dann alles einwenig abändern. Mal sehn ob ich damit heute noch fertig werde.

Danke Dir


user profile iconsunspeed hat folgendes geschrieben:

warum INI? Leg den Wert doch als Integer in der Registry ab, auch nich optimal aber immerhin tust dir leichter.


Also, Registry hatz hier nix verloren. der WErtebereich wird nämlich nicht von mir, sonderm vom User festegelegt. Der hat von mir nur ne Anleitung, nach welcehm Schema er seine INI zu schreiben hat. Aber was er reinschreibt (sind ja viel mehr sache ndrin), ist und bleibt seine Sache.
Also ,muß ich alle Anweisungen aus der INI rauslesen.

Lieben Gruß

Smartie


sunspeed - Mi 04.05.05 09:45

Nun gut, dann solltest du die Werte als Integer in die INI Ablegen, wie oben beschrieben.


Grendel - Mi 04.05.05 10:00

Ob etwas in einem Wertebereich liegt kann man auch mit dem Schlüsselwort in abfragen.


Delphi-Quelltext
1:
if Wert in [Min..Max] then                    


Bis neulich ...


jasocul - Mi 04.05.05 10:27

Das geht nicht, da die Wertemenge die Anzahl von 256 nicht überschreiten darf.
Aus der Delphi-Hilfe:
Zitat:

Der Bereich eines Mengentyps ist die Potenzmenge eines bestimmten Ordinaltyps, der als Basistyp bezeichnet wird. Die möglichen Werte eines Mengentyps sind Teilmengen des Basistyps, einschließlich der leeren Menge. Der Basistyp darf aus maximal 256 Werten bestehen. Die Ordinalpositionen der Werte müssen zwischen 0 und 255 liegen.

Sollten noch nicht-ordinale Werte (z.B. Real) dazu kommen, geht es erst recht nicht.