Moin!
Wie ist eure Meinung zu der Thematik Aufzählungstypen: Könnten evtl. mehr als 256 benannte Elemente ermöglicht werden?
Delphi-Quellcode:
type
TMyEnum = (meNull, meEins, meZwei, {...} meZweihundertfuenfundfuenfzig, meZweihundertsechsundfuenfzig);
{...}
var
I: Integer;
begin
I := Integer(meZweihundertfuenfundfuenfzig); // I = 255
I := Integer(meZweihundertsechsundfuenfzig); // I = 0
I := Integer(TMyEnum(256)); // I = 256
I := Integer(TMyEnum(1024)); // I = 1024
I := Integer(TMyEnum(-1)); // I = -1
end;
So isses ja derzeit. Der Typ als solches kann durchaus mehr als 256 Elemente aufnehmen, nur benannt werden können sie nicht. Das 257ste Element führt dann zum Wert "0", was ich auch nicht gerade sinnig finde.
Ich stoße immer wieder auf Fälle, wo ich durchaus mehr als 256 benannte Elemente gebrauchen könnte und dann auf Konstanten ausweichen muss. Die haben aber den Nachteil, dass sie nicht typisiert sind und mir da schon mehrmals passiert ist, dass ich versehentlich zwei gleiche Werte hatte.
Ich könnte mir z.B. eine Syntax wie diese hier gut vorstellen:
Delphi-Quellcode:
type
TMyEnum[-1..1024] = (meMinusEins, meNull, meEins, meZwei, {...} meZweihundertfuenfundfuenfzig, meZweihundertsechsundfuenfzig, {...} meTausendvierundzwanzig);
{...}
var
I: Integer;
begin
I := Integer(meMinusEins); // I = -1
I := Integer(meZweihundertfuenfundfuenfzig); // I = 255
I := Integer(meZweihundertsechsundfuenfzig); // I = 256
I := Integer(meTausendvierundzwanzig); // I = 1024
end;
und dann entsprechend
Delphi-Quellcode:
type
TMyEnum[-1..1024] = (meMinusEins, meNull, meEins, meZwei, {...} meTausendvierundzwanzig, meTausendfuenfundzwanzig); // <- Compilerfehler "Außerhalb des Bereichs"
Grüße
Cody