Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Abfrage bereichsbegrenzung (von 'a' bis 'b')


Leux - Do 30.04.09 17:50
Titel: Abfrage bereichsbegrenzung (von 'a' bis 'b')
Hallo liebe Delphi-Forum.de Gemeinschaft. ^^

Erstmal: fals das thema bereits existieren sollte. Entschuldigung aber da ich wort wörtlich einer der Blutigsten der Blutigenanfänger in Delphi, oder besser im programmieren allgemein bin, hatte ich simpel keine ahnung wie der Befehl heist den ich suche:

Ich will Abfragen liegt x im bereich zwischen (bsp) 40 und 60 ?

ich hab mir zusammegereimt durch Durchforsten diverser Seiten das der Befehl in etwa

Delphi-Quelltext
1:
if x in ['40'..'60'then                    
heisen müsste...
ABER is' nich... keine Ahnung warum.
Beim Abfregen ganzerzahlen könnt ich ja or verwenden, aber irgendwann wird's dann ja etwas sehr viel.

Danke schonmal für eure Zeit. ^^

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt
Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


Narses - Do 30.04.09 18:00

Moin und :welcome: im Forum!

user profile iconLeux hat folgendes geschrieben Zum zitierten Posting springen:
ich hab mir zusammegereimt durch Durchforsten diverser Seiten das der Befehl in etwa

Delphi-Quelltext
1:
if x in ['40'..'60'then                    
heisen müsste...
ABER is' nich... keine Ahnung warum.
Du darfst Zahlen nicht in Anführungszeichen setzen, dann sind das Strings. :idea: ;) Allerdings: bei dieser Form der Abfrage darf der Bereich 256 Elemente nicht überschreiten, da Mengen in Delphi nicht mehr Elemente enthalten können.

user profile iconLeux hat folgendes geschrieben Zum zitierten Posting springen:
Beim Abfregen ganzerzahlen könnt ich ja or verwenden, aber irgendwann wird's dann ja etwas sehr viel.
Das mit den "ganzen Zahlen" hab ich zwar noch nicht ganz verstanden :? aber du kannst dir auch eine kleine Funktion dazu schreiben:

Delphi-Quelltext
1:
2:
3:
4:
function InRange(const x, min, max: Integer): Boolean;
begin
  Result := (min <= x) and (x <= max);
end;
cu
Narses


Leux - Do 30.04.09 18:06

Wow das gin fix...

*lol* ok das erklärt Einiges ^^"

Danke @ Narses ^^

ganze Zahlen naja damit meine ich halt Nachkommastellenfrei Zahlen ^^"
aber danke ;-}


Narses - Do 30.04.09 18:15

Moin!

user profile iconLeux hat folgendes geschrieben Zum zitierten Posting springen:
Danke @ Narses ^^
You´re :welcome:, wie man so sagt. ;)

user profile iconLeux hat folgendes geschrieben Zum zitierten Posting springen:
ganze Zahlen naja damit meine ich halt Nachkommastellenfrei Zahlen
Wie "ganze Zahlen" definiert sind, war mir noch in Erinnerung :D ich meinte, warum or nur bei Integer-Zahlen funktionieren sollte? :nixweiss:

cu
Narses


Leux - Do 30.04.09 19:24

neee ich meinte ja nicht "Nur" sonder so in etwa:

Delphi-Quelltext
1:
If (x=1or (x=2or (x="3") or ... or (x="Unendlich - 1") then                    
^^"

Aber ich scheine irgendwie zu doof zu sein

Delphi-Quelltext
1:
if x in [40..60then                    
korreckt einzugeben

Code:

Delphi-Quelltext
1:
if (sin in [20..24]) then                    
Nach dem ")" meckert der was vonwegen, falsche Typ ... ich tip mal drauf, das die Variable "sin" nicht "real" sein darf, oder ?
Da keimt natürlich die Frage, was darf die Variable denn nur für ein Typ sein???

Moderiert von user profile iconNarses: Delphi-Tags hinzugefügt


jaenicke - Do 30.04.09 19:33

Das geht nur mit ganzen Zahlen (Integer, Cardinal, ...), aber dann nimm einfach die Vergleichsvariante, nur eben mit Double (oder welchen Datentyp du verwendest) statt Integer:
user profile iconNarses hat folgendes geschrieben Zum zitierten Posting springen:
aber du kannst dir auch eine kleine Funktion dazu schreiben:

Delphi-Quelltext
1:
2:
3:
4:
function InRange(const x, min, max: Integer): Boolean;
begin
  Result := (min <= x) and (x <= max);
end;


Hidden - Do 30.04.09 19:38

hi :)

'sin' dürfte eigentlich für die entsprechende Funktion reserviert sein. Sollte es trotzdem so funktionieren, würde ich das aber trotzdem tunlichst sein lassen ;)

Was dein Problem mit einer Folge von ors angeht: Delphi bietet die Operatoren >, <, >=, <=. Ansonsten bietet sich für nicht so einfache Probleme, die sich als Folgen auffassen lassen, sicherlich eine Schleife an. Dazu schaust du dir am besten einfach den Crashkurs von Christian S. [http://www.christian-stelzmann.de/artikel/CrashkursReloaded/] an :)

mfG,


Leux - Fr 01.05.09 19:30

Danke @ all ^^

Jetzt hab ich es (bilde ich mir jedenfals ein) verstanden.

Aber kleine Frage am Rande:
Kann man irgendwie sagen "Lade beim Programmstart nicht Form1 sonder Form2".
Ich hab nen kleinen Logischen fehler gemacht und vergessen, zu allererst die Menue Form zu basteln und nun hab ich drei Tage an der anderen rumgearbeitet und ich will stark bezweifeln, dass ich es hinbekomme den Quelltext funktionsfähig von Form 1 nach Form2 zu transferieren. ^^"

giebt es da irgendwo einen Eintrag der sagt welche Form geladen werden soll?

Moderiert von user profile iconNarses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.


jaenicke - Fr 01.05.09 19:32

Das kannst du im Projektquelltext (Projekt --> Quelltext anzeigen) selbst ändern (das zuerst erzeugte Programm ist das Hauptformular) oder in den Projektoptionen (Projekt --> Optionen... --> Formulare).

Und fürs nächste Mal: neue Frage, neuer Thread im Forum bitte! (siehe Richtlinien)


Leux - Fr 01.05.09 19:37

oh hopala ganz vergessen ^^"""

Verzeihung und danke.