Einzelnen Beitrag anzeigen

Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
2.272 Beiträge
 
Delphi 10.4 Sydney
 
#1

Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente

  Alt 25. Jul 2018, 07:41
Delphi-Version: 10.2 Tokyo
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
Ich mache grundsätzlich keine Screenshots. Schießen auf Bildschirme gibt nämlich hässliche Pixelfehler und schadet der Gesundheit vom Kollegen gegenüber. I und E zu vertauschen hätte den selben negativen Effekt, würde aber eher dem Betriebsklima schaden
  Mit Zitat antworten Zitat