AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

Ein Thema von Andreas13 · begonnen am 21. Apr 2023 · letzter Beitrag vom 21. Apr 2023
Antwort Antwort
Seite 1 von 2  1 2      
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#1

Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 13:10
Delphi-Version: XE5
Hallo Community,
ich möchte gerne die die Anzahl der Elemente eines AufzählungsTyps ermitteln.
Beispiel:
Delphi-Quellcode:
Type
  MyType = (aa, bb, cc, dd, ee); // --> 5 sollte bestimmt werden
Gibt es dazu eine Delphi-Funktion?

Danke für jede Idee + Anregung im Voraus!

Viele Grüße
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#2

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 13:50
Anzahl := High(MyType) + 1; https://www.delphipraxis.net/104698-...ermitteln.html
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.609 Beiträge
 
Delphi 12 Athens
 
#3

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 13:58
Funktioniert aber nicht bei solchen Deklarationen (aus dem Delphi DokWiki):
Delphi-Quellcode:
type
  Size = (Small = 5, Medium = 10, Large = Small + Medium);
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#4

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 13:59
Steht alles ausführlich im verlinkten Post aus der DelphiPraxis
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#5

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 14:13
Funktioniert aber nicht bei solchen Deklarationen (aus dem Delphi DokWiki):
Delphi-Quellcode:
type
  Size = (Small = 5, Medium = 10, Large = Small + Medium);
Danke Uwe,
aber obige Type-Deklaration paßt leider nicht zu meinem Anwendungsfall
Grüße, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#6

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 14:18
So funktioniert es:
Anzahl := Ord(High(MyType)) + 1; Danke Euch für die Hilfe!

Grüße, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

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

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 14:27
Jupp, High liefert nicht die Anzahl den Index, sondern das Element, also ee.

Mit Ord lässt sich der Index in einen anderen ordinalen Typen (Integer) konvertieren.

Delphi-Quellcode:
Anzahl := Ord(High(MyType)) + 1;
Anzahl := Succ(Ord(High(MyType)));
//Anzahl := Ord(Succ(High(MyType)));

Ja, wenn man die Indize im Typen manipuliert/vorgibt, und dabei Lücken entstehen, dann fehlt in der Typeinfo die Liste der Elementnamen (auch wenn es dafür einen einfachen Bugfix gäbe, aber Emba wollte nicht)
und somit fehlt auch die Möglichkeit den Teilbereich zu bestimmen. (dann geht es nur noch über die Speichergröße des ganzen Enum und die ist nunmal 1, 2, 4 oder 8 Bytes, bzw. beim Set bis 32 Byte, also 0..255)
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (21. Apr 2023 um 18:21 Uhr)
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.490 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 16:15
Funktioniert aber nicht bei solchen Deklarationen (aus dem Delphi DokWiki):
Delphi-Quellcode:
type
  Size = (Small = 5, Medium = 10, Large = Small + Medium);
Das ist auch kein (echter) AufzählungsTyp, sondern so ein Spezialgewürge
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
721 Beiträge
 
Delphi XE5 Professional
 
#9

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 14:11
Sorry Delphi.Narium,
has hatte ich bereits probiert: XE5 meldet:
[dcc32 Fehler] Anzahl_Elemente_AufzaehlungsTyps_1.dpr(52): E2010 Inkompatible Typen: 'Integer' und 'MyType'
Grüße
Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.554 Beiträge
 
Delphi 7 Professional
 
#10

AW: Wie läßt sich die Anzahl der Elemente eines AufzählungsTyps bestimmen?

  Alt 21. Apr 2023, 14:18
Sorry Delphi.Narium,
has hatte ich bereits probiert: XE5 meldet:
[dcc32 Fehler] Anzahl_Elemente_AufzaehlungsTyps_1.dpr(52): E2010 Inkompatible Typen: 'Integer' und 'MyType'
Grüße
Andreas
Dann die Variante mit der For-Schleife aus verlinktem Post probieren.
Delphi-Quellcode:
var
  i: TMyEnum;
  Zahler: Integer;
begin
  Zahler := 0;
  for i := Low(TMyEnum) to High(TMyEnum) do
    Inc(Zaehler);
end;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 15:08 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 by Thomas Breitkreuz