Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Anzahl der Elemente einer Enum
Martok - Do 23.05.13 17:46
Titel: Anzahl der Elemente einer Enum
Hallöchen!
Möchte jemand seltsame Probleme lösen, die sich in noch seltsameren Corner Cases bewegen? Super, ich hab da was für euch :zustimm:
Situation:
Delphi-Quelltext
1: 2: 3: 4: 5:
| TEnum = ( eVal1 = $f000, eVal2 = $f002, eVal3 = $f004, ); |
Jetzt ist die spannende Frage: wie viele Elemente hat diese Enum? High()-Low() passt nicht, da die Werte einen größeren Abstand haben. TypeInfo gibt aus genau diesem Grund
auch keine [
http://stackoverflow.com/questions/1420562/why-do-i-get-type-has-no-typeinfo-error-with-an-enum-type].
Ich brauche das Ganze für Array-Grenzen, muss also vom Compiler auflösbar sein.
array[TEnum] of als simple Lösung geht nicht, weil das (vermutlich deswegen) auch keine Assigned Enums mag.
Hat da jemand kreative Ideen, die besser sind als "Zähle halt von Hand und schreib die Zahl hin"?
Viele Grüße,
Martok
Mathematiker - Do 23.05.13 23:36
Hallo,
vielleicht äußere ich mich jetzt zu einer Sache, von der ich mit meinem Delphi 5 eigentlich keine Ahnung habe. Wenn ja, so seht es mir bitte nach.
Da Delphi 5 diese spezielle Art von type nicht kennt, habe ich herumexperimentiert und bin auf
Delphi-Quelltext
1: 2: 3: 4:
| type TEnum = (eval1,eval2,eval3,eval4); const MyTEnum: array[TENum] of integer = ($f000,$f002,$f004,$f015); |
gekommen. length(MyTEnum) gibt dann die Anzahl der Elemente korrekt wieder.
Riesiger Nachteil: die Bezeichner und zugewiesenen Werte sind getrennt, aber es funktioniert. Blöd ist auch, dass ich MyTEnum[eval1] usw. verwenden muss.
Mehr weiß ich nicht. Wahrscheinlich ist die Idee auch nicht neu. :oops:
Beste Grüße
Mathematiker
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!