Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Werte in Datentypen zählne (https://www.delphipraxis.net/164520-werte-datentypen-zaehlne.html)

Johannes013 16. Nov 2011 18:30

Werte in Datentypen zählne
 
Hi Leute :)

Wie kann ich alle Möglichen Werte eines Datentyps zählen?

Also wenn ich z.B. TMyType = (mtEins, mtZwei, ...) habe, wie kann ich Zählen wie viele Werte es gibt?

Gruß Johannes

Bummi 16. Nov 2011 19:22

AW: Werte in Datentypen zählne
 
RTTI:

http://delphi.about.com/od/delphitip.../enum-rtti.htm

himitsu 16. Nov 2011 20:25

AW: Werte in Datentypen zählne
 
Delphi-Quellcode:
Anzahl := Ord(High(TDeinEnum)) + 1;
.

PS: Wenn man die einzelnen Felder ds ENums mit einem Wert vorbelegt hätte, dann hat dieser Type keine detailierte RTTI und man kommt sowieso nicht weiter, da man dann die Felder nicht auflisten kann.
Die RTTI hilft also nur, wenn die einzelnen Enumwerte aufeinanderfolgend, von 0 beginnend sind ... und bei diesem Standardfall kann man es auch direkt berechnen (siehe oben)


Vorbelegung:
Delphi-Quellcode:
TMyENum = (ein, zwei, zehn=10);

Bummi 16. Nov 2011 22:28

AW: Werte in Datentypen zählne
 
@himitsu
Zitat:

Die RTTI hilft also nur, wenn die einzelnen Enumwerte aufeinanderfolgend
das gilt allerdings auch für Deine (einfachere) Methode

himitsu 16. Nov 2011 23:28

AW: Werte in Datentypen zählne
 
Jupp, der maximale Wert plus die Null = Anzahl laut Definition.
Sollten Teile übersprungen werden, hat man Pech (Emba hört ja nicht auf mich, bzw. meinen Vorschlag für eine mögliche Lösung ... einfach die Leerwerte mit einem Leerstring/Dummywert befüllen).

SizeOf(TDeinEnum) * 8 = Anzahl laut Datengöße.

Sir Rufo 16. Nov 2011 23:32

AW: Werte in Datentypen zählne
 
Zitat:

Zitat von Bummi (Beitrag 1136562)
@himitsu
Zitat:

Die RTTI hilft also nur, wenn die einzelnen Enumwerte aufeinanderfolgend
das gilt allerdings auch für Deine (einfachere) Methode

Er hat auch nichts anderes behauptet, oder doch :gruebel:
Zitat:

Zitat von himitsu (Beitrag 1136537)
Die RTTI hilft also nur, wenn die einzelnen Enumwerte aufeinanderfolgend, von 0 beginnend sind ... und bei diesem Standardfall

eben jener mit aufeinanderfolgenden Enum-Werten
Zitat:

Zitat von himitsu (Beitrag 1136537)
kann man es auch direkt berechnen (siehe oben)



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