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

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

Ein Thema von Codehunter · begonnen am 25. Jul 2018 · letzter Beitrag vom 25. Jul 2018
Antwort Antwort
Seite 2 von 3     12 3   
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.973 Beiträge
 
Delphi 10.3 Rio
 
#11

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

  Alt 25. Jul 2018, 08:55
Das deckt sich auch mit der Bechreibung hier:

https://de.wikibooks.org/wiki/Progra...z%C3%A4hlungen (insbesondere der letzte Absatz ganz unten)
Nein, das tut es nicht. Der angesprochene Absatz beschreibt nur das Verhalten der von mir bereits angesprochenen Mindestgröße für Enum, mit der festgelegt wird, welcher Speicherbereich für ein Enum verwendet wird. Bei der Standardeinstellung Byte tritt genau das in dem Absatz beschriebene Verhalten auf. Konkretes Beispiel: TMyEnum hat 300 Elemente und belegt somit mindestens 2 Byte. Daher lassen sich einer Variablen vom Typ TMyEnum auch Ordinalwerte bis 65535 zuweisen, obwohl der Typ diese eigentlich nicht mehr unterstützt.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#12

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

  Alt 25. Jul 2018, 08:57
@Codehunter

So irgendwelche Quellen sind ja teilweise hilfreich, aber warum nicht mal einen Blick in die Doku des Herstellers werfen?

http://docwiki.embarcadero.com/RADSt...-Typen_(Delphi)

Zitat:
Enthält der Aufzählungstyp mehr als 256 Werte oder wurde er im Status {$Z2} deklariert, wird er als vorzeichenloses Wort gespeichert.
Also bei mit gibt's nur
Code:
Diese Seite enthält momentan noch keinen Text und du bist auch nicht dazu berechtigt, diese Seite zu erstellen. Du kannst ihren Titel auf anderen Seiten suchen oder die zugehörigen Logbücher betrachten.
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General
Online

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.055 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#13

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

  Alt 25. Jul 2018, 08:58
EDIT: Fast übersehen!
Dagegen spricht auch die Compiler-Option Mindestgröße für Enum, in der man Byte, Word oder Double Word auswählen kann.
Das ist des Rätsels Lösung! Das steht per Default auf Byte und schon hat man den Effekt wie beschrieben. Stellt man höher, passt es. Das ist so ein Fall von Kopf knallt auf Tischplatte... Uwe du solltest Bücher schreiben!
Die Sache ist die... Es funktioniert auch mit Mindestgröße = 1 Byte (siehe Anhang)
Miniaturansicht angehängter Grafiken
gehtdoch.jpg  
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.973 Beiträge
 
Delphi 10.3 Rio
 
#14

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

  Alt 25. Jul 2018, 09:01
Also bei mit gibt's nur
Code:
Diese Seite enthält momentan noch keinen Text und du bist auch nicht dazu berechtigt, diese Seite zu erstellen. Du kannst ihren Titel auf anderen Seiten suchen oder die zugehörigen Logbücher betrachten.

Links mit schließender Klammer werden in diesem System nicht korrekt wiedergegeben. Häng halt noch eine Klammer dran, dann passt es.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von Codehunter
Codehunter

Registriert seit: 3. Jun 2003
Ort: Thüringen
1.949 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#15

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

  Alt 25. Jul 2018, 09:09
So irgendwelche Quellen sind ja teilweise hilfreich, aber warum nicht mal einen Blick in die Doku des Herstellers werfen?

http://docwiki.embarcadero.com/RADSt...-Typen_(Delphi)
Der war gut!
Zitat von Embarcadero-Website:
Mindestgröße für Enum-Typen (Delphi

Diese Seite enthält momentan noch keinen Text und du bist auch nicht dazu berechtigt, diese Seite zu erstellen. Du kannst ihren Titel auf anderen Seiten suchen oder die zugehörigen Logbücher betrachten.
Davon ab hast du natürlich Recht, es geht mir um Enums (und davon nachrangig dann auch wieder um Sets wie TMySet = set of TMyEnum). In meinem Sprachgebrauch hat sich Set=Enum und SetOf=set of Enum eingebürgert. Daher die irreführende Überschrift.

EDIT: So richtig erklärlich ist dieses Verhalten mit dem (ich nenne es mal so) "Loop-Überlauf" oder "Ringpuffer" bei benannten Aufzählungen aber nicht. Dass es nicht nur mir allein so geht belegt ja der von mir verlinkte Beitrag. Zugegeben der Fall kommt sehr selten vor dass man so viele benannte Zähler braucht, vielleicht wurde das deshalb noch nicht thematisiert?
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

Geändert von Codehunter (25. Jul 2018 um 09:14 Uhr)
  Mit Zitat antworten Zitat
Schokohase

Registriert seit: 17. Apr 2018
964 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#16

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

  Alt 25. Jul 2018, 09:36
Ich habe den Link korrigiert

Hier aber nochmal Mindestgröße für Enum-Typen (Delphi)
  Mit Zitat antworten Zitat
gammatester

Registriert seit: 6. Dez 2005
999 Beiträge
 
#17

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

  Alt 25. Jul 2018, 09:53
So richtig erklärlich ist dieses Verhalten mit dem (ich nenne es mal so) "Loop-Überlauf" oder "Ringpuffer" bei benannten Aufzählungen aber nicht. Dass es nicht nur mir allein so geht belegt ja der von mir verlinkte Beitrag.
Lies mal die letzten beiden Sätze des Beitrags:
Code:
Ist die letzte Position 256 oder höher, können Werte bis 65535 angegeben werden usw. Auch negative Werte sind möglich, wenn entsprechende benannte Positionen definiert werden.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
34.931 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#18

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

  Alt 25. Jul 2018, 10:08
Ursprünglich bassiert der ENUM auf einem Set von Assemblerbefehlen, welche allerdings "sehr" suboptimal (lahmarschig) von praktisch allen CPU-Entwicklern umgesetzt sind.
Und diese Befehle kennen nunmal ausschließlich eine Byte-Adressierung.
https://en.wikipedia.org/wiki/Bit_Test

ABER SET ist nicht gleich SET.
Genauso, wie bei den Arrays, gibt es da Unterschiede wo etwas definiert ist.
array of xyz als Methodenparameter sind ein Sonderfall, welcher ganz anders behandelt wird.

if x in [...] then wird als CASE vom Compiler implementiert,
aber wenn [...] aus einer Variable kommt, dann mit den erwähnten Assembler-Befehlen.
Konstanten sind hierbei sehr oft typisiert, womit es eigentlich "schreibgeschützte Variablen" sind, welche dann nicht inplace als CASE behandelt werden können.



Und ja, wenn man das Ganze "manuell" als Bitmasken auf einem statischen IntegerArray mit SHL SHR AND OR XOR umsetzen würde, dann gingen auch viel mehr Bits.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014

Geändert von himitsu (25. Jul 2018 um 10:10 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
6.973 Beiträge
 
Delphi 10.3 Rio
 
#19

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

  Alt 25. Jul 2018, 10:20
dann gingen auch viel mehr Bits.
Für mehr Bits gibt es ja die Klasse TBits.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
492 Beiträge
 
Delphi 2009 Professional
 
#20

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

  Alt 25. Jul 2018, 10:21
Die 256-Elemente-Begrenzung gibt es allerdings bei Sets.
Finde ich nervig und das sollte mal verbessert werden. Da zählen nämlich auch Lücken im Enum mit. Folgender Code kompiliert somit nicht:
Delphi-Quellcode:
TMeinEnum = (meHallo = 0, meWelt = 256);
TMeinSet = set of TMeinEnum;
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 14:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf