AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Werte in Datentypen zählne

Ein Thema von Johannes013 · begonnen am 16. Nov 2011 · letzter Beitrag vom 16. Nov 2011
Antwort Antwort
Johannes013

Registriert seit: 2. Jun 2009
179 Beiträge
 
Delphi 5 Standard
 
#1

Werte in Datentypen zählne

  Alt 16. Nov 2011, 18:30
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
Johannes
Der folgende Satz ist richtig.
Der vorherige Satz ist falsch.
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: Werte in Datentypen zählne

  Alt 16. Nov 2011, 19:22
RTTI:

http://delphi.about.com/od/delphitip.../enum-rtti.htm
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Werte in Datentypen zählne

  Alt 16. Nov 2011, 20:25
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:
TMyENum = (ein, zwei, zehn=10);
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#4

AW: Werte in Datentypen zählne

  Alt 16. Nov 2011, 22:28
@himitsu
Zitat:
Die RTTI hilft also nur, wenn die einzelnen Enumwerte aufeinanderfolgend
das gilt allerdings auch für Deine (einfachere) Methode
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#5

AW: Werte in Datentypen zählne

  Alt 16. Nov 2011, 23:28
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.
$2B or not $2B

Geändert von himitsu (17. Nov 2011 um 00:58 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: Werte in Datentypen zählne

  Alt 16. Nov 2011, 23:32
@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
Die RTTI hilft also nur, wenn die einzelnen Enumwerte aufeinanderfolgend, von 0 beginnend sind ... und bei diesem Standardfall
eben jener mit aufeinanderfolgenden Enum-Werten
kann man es auch direkt berechnen (siehe oben)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:24 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