Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Anzahl der Möglichkeiten in einer Aufzählung (https://www.delphipraxis.net/67909-anzahl-der-moeglichkeiten-einer-aufzaehlung.html)

Delphi-Freak 21. Apr 2006 17:07


Anzahl der Möglichkeiten in einer Aufzählung
 
Hi!
Ich denke, der Titel sagt eh schon alles; als Beispiel:
Delphi-Quellcode:
type
  TMyType = (mtOpt1, mtOpt2, mtOpt3);
Wie bekomme ich da die Anzahl, also in diesem Fall 3, heraus?

LG, ich

jim_raynor 21. Apr 2006 17:09

Re: Anzahl der Möglichkeiten in einer Aufzählung
 
Versuche es mit Integer(high(TMyType))+1. Darfst damm aber keine Wertzuweisungen, wie ab Delphi 6 (?) möglich machen. Dann stimmt das nicht mehr.

Delphi-Freak 21. Apr 2006 17:13

Re: Anzahl der Möglichkeiten in einer Aufzählung
 
Tschuldige, ich habs auf einmal doch gefunden: http://www.delphipraxis.net/internal...ct.php?t=27715
Delphi-Quellcode:
Ord(High(TMyType))
In der Hilfe steht aber doch, dass High schon einen Integer-Wert zurückgibt :roll:
Aber Hauptsache es funktioniert - trotzdem DANKE...

LG, ich

jim_raynor 21. Apr 2006 17:16

Re: Anzahl der Möglichkeiten in einer Aufzählung
 
Zitat:

Zitat von Delphi-Freak
In der Hilfe steht aber doch, dass High schon einen Integer-Wert zurückgibt :roll:
Aber Hauptsache es funktioniert - trotzdem DANKE...

Nur bei einem Integer-Typen. Bei einer Aufzählung gibt er den Aufzählungstypen zurück. Eine direkte Zuweisung an einen Integer ist damit nicht möglich ;)

Hawkeye219 21. Apr 2006 17:51

Re: Anzahl der Möglichkeiten in einer Aufzählung
 
Hier eine Lösung für Mengen mit Wertzuweisung:

Delphi-Quellcode:
Anzahl := Ord(High(TMenge)) - Ord(Low(TMenge)) + 1;
Dieser Ausdruck liefert auch für den folgenden Fall die richtige Lösung (8 Elemente):

Delphi-Quellcode:
TYPE TFarbe = (rot=3, gelb=9, gruen);
     TMenge = SET OF TFarbe;
Von diesen 8 Elementen haben im Beispiel nur 3 einen Namen erhalten. Die restlichen Elemente können aber durchaus vorkommen:

Delphi-Quellcode:
Variable := [rot..gruen]; // enthält alle 8 Elemente
Gruß Hawkeye

Delphi-Freak 21. Apr 2006 18:42

Re: Anzahl der Möglichkeiten in einer Aufzählung
 
Danke! Nachdem ich aber eh nur mit "einfachen" Aufzählungen (die bei 0 beginnen) arbeite, sollte die obere möglichkeit auch reichen...
Noch hinzuzufügen, für alle zukünftig suchenden: Das mit
Delphi-Quellcode:
Ord(High(TMyType))
gibt nicht die Anzahl aus, da muss man noch eins addieren; wenn man es aber in einer for-Schleife (wie ich) verwendet, dann braucht mans eben nicht...

LG, ich


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:37 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz