AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Eure Meinung: Syntaxerweiterung Set-Typen auf mehr als 255 Elemente
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von Codehunter · begonnen am 25. Jul 2018 · letzter Beitrag vom 25. Aug 2020
 
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
 


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 10:30 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