Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Wie kann ich einen Zahlenbereich abfragen? (https://www.delphipraxis.net/163506-wie-kann-ich-einen-zahlenbereich-abfragen.html)

foerster7892 1. Okt 2011 08:59

Delphi-Version: 5

Wie kann ich einen Zahlenbereich abfragen?
 
Ich möchte zb den Bereich:

if 8<Zahl<12 and 20<Zahl<50 then

kann mir da einer einen tipp geben plz?

Uwe Raabe 1. Okt 2011 09:10

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Zitat:

Zitat von foerster7892 (Beitrag 1127863)
Ich möchte zb den Bereich:

if 8<Zahl<12 and 20<Zahl<50 then

kann mir da einer einen tipp geben plz?

Abgesehen davon, daß dein Code ungeachtet der fehlenden Klammern leicher mit

Delphi-Quellcode:
if false then

geschrieben werden kann, gibt es für die Abfrage von Bereichen noch folgendes.

Wenn der Zahlenbereich ausreichend beschränkt ist geht dies:

Delphi-Quellcode:
if zahl in [9..11, 21..49] then

Bei neueren Delphi-Versionen gibt es auch die Funktion InRange aus der Unit Math.pas:

Delphi-Quellcode:
if InRange(zahl, 9,11) or InRange(zahl, 21, 49) then

himitsu 1. Okt 2011 09:56

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Deine Bedingung sieht eigentlich so aus:
Delphi-Quellcode:
if ((8 < Zahl) and (Zahl < 12)) and ((20 < Zahl) and (Zahl < 50)) then

if ((Zahl > 8) and (Zahl < 12)) and ((Zahl > 20) and (Zahl < 50)) then
.

Und wie Uwe schon erwähnte, kann Zahl nicht gleichzeitig <12 und >20 sein.
Ich denke also, du meinst wohl eher ein OR.
Delphi-Quellcode:
if ((Zahl > 8) and (Zahl < 12)) or ((Zahl > 20) and (Zahl < 50)) then
.

Aber wie du siehst, gibt es da übersichtlichere Möglichkeiten.
PS: Das mit dem IN-Operator geht nur für Zahlen von 0 bis 255, bzw. über einen Bereich mit 256 Werten.


plz? Wieso willst du eine Postleitzahl?

foerster7892 1. Okt 2011 10:51

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Ja danke sowas hab ich gesucht:
if zahl in [9..11, 21..49] then

und nein ich brauche das nicht für postleitzahlen ich möchte es verwenden um in einem Text alle Zeichen die keine Buchstaben sind auszuschneiden also praktisch einfach im ASCII code die Zeichen entfernen die den Bestimmten Zahlenbereich nicht erfüllen

Sir Rufo 1. Okt 2011 12:18

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Zitat:

Zitat von foerster7892 (Beitrag 1127878)
Ja danke sowas hab ich gesucht:
if zahl in [9..11, 21..49] then

und nein ich brauche das nicht für postleitzahlen ich möchte es verwenden um in einem Text alle Zeichen die keine Buchstaben sind auszuschneiden also praktisch einfach im ASCII code die Zeichen entfernen die den Bestimmten Zahlenbereich nicht erfüllen

Warum dann nicht noch komplizierter? :mrgreen:

Du mußt also von jedem Zeichen des Textes den ASCII Wert bestimmen und dann den Zahlenwert vergleichen.

Vergleiche doch einfach, ob das Zeichen in einer bestimmten Zeichenmenge ist.
Resultat ist das gleiche, die Umsetzung einfacher und auch lesbarer ;)
Delphi-Quellcode:
If MeinText[ idx ] in ['a'..'z','A'..'Z'] then
Den gültigen Bereich kannst du beliebig erweiterrn

foerster7892 1. Okt 2011 13:57

AW: Wie kann ich einen Zahlenbereich abfragen?
 
stimmt eigl^^:roll:

ja naja ich mags halt kompliziert^^

himitsu 1. Okt 2011 14:20

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Nein, komplizierter ist z.B.
Delphi-Quellcode:
If (MeinText[idx] <= #127) and (UpperCase(MeinText[idx]) <> LowerCase(MeinText[idx])) then
, obwohl er auch das gleiche Ergebnis liefert.

Ach ja, ab Delphi 2009 sollte man eventuell auf Delphi-Referenz durchsuchenCharInSet ausweichen.

foerster7892 1. Okt 2011 19:03

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Ich benutze Lazarus zum programmieren!

Kann mir einer sagen wie ich Umlaute abfrage? (Diese möchte ich nämlich ebenfalls erhalten) also kann ich da im Quelltext auch ÄÖÜß schreiben oder muss ich dann die ASCII codierung nutzen?

Sir Rufo 1. Okt 2011 19:34

AW: Wie kann ich einen Zahlenbereich abfragen?
 
Zitat:

Zitat von foerster7892 (Beitrag 1127921)
Ich benutze Lazarus zum programmieren!

Kann mir einer sagen wie ich Umlaute abfrage? (Diese möchte ich nämlich ebenfalls erhalten) also kann ich da im Quelltext auch ÄÖÜß schreiben oder muss ich dann die ASCII codierung nutzen?

Also entweder schaust du mal in ein Tutorial, eine Dokumentation, suchst bei Google, oder ...

du probierst es einfach mal aus, was ich dir geschrieben habe (Zeitaufwand sollte so bei <1 Minute liegen) :roll:


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