Zitat:
Wie der Compiler wann wieviel Platz reserviert ist mir im Moment noch nicht ganz klar.
Das ist wohl ein Problem der Optimierung.
Immerhin gibst du bei diesen Sets die Werte des zugehörigen Enum-Typs vor.
Delphi-Quellcode:
type x = Set of 15..16;
type z = 15..16;
x = Set of z;
type z = (a=15, b=16);
x = Set of z;
Da kann es sein, daß der Compiler bei einigen Varianten auf eine Umrechnung verzichtet und sich so beim Vergleich der Sets etwas arbeit erspart?
Diese automatisch generierten Sets sind halt immer etwas anfällig.
Delphi-Quellcode:
// 1 Byte
type z = (a=0, b=1);
x = Set of z;
// 2 Byte
type z = (a=14, b=15);
x = Set of z;
Und dann kommen da auch ab und zu noch andere Faktoren ins Spiel.
Delphi-Quellcode:
type x = (a, b);
{$MINENUMSIZE 2}
z = (c, d);
x = 1 Byte
z = 2 Byte
[edit]
Zitat-, statt Delphi-Tags