Hallo,
Da bist du auf ein nettes Problem gestoßen. FPC handhabt die Mengen in unterschiedlicher Art und Weise je nach Sprachvariante und Version:
Unter anderem gibt es dazu einen Bugtracker Eintrag, das im Delphi Modus Mengen nicht korrekt gehandhabt werden :
http://mantis.freepascal.org/view.php?id=15088 , laut Notizen ist das in 2.5.1 behoben.
Probiere mal folgenden Testcode mit {$Packset 1} wie im Bug Eintrag beschrieben.
(leider kommt es im Board wohl zu Komplikationen mit eckigen Klammern + syntax Hervorhebung, daher Byte(Flags) := Byte(0) statt Flags := []):
Code: Alles auswählen
{$PACKSET 1}
var
ByteWert : integer;
type
TXFlag = (xfEins, xfZwei, xfDrei);
TXFlags = set of TXFlag;
var
Flags: TXFlags;
begin
Byte(Flags) := Byte(0);
ByteWert := 6; // = {xfZwei,xfDrei}
Byte(Flags) := Byte(ByteWert and $0F); // {xfZwei,xfDrei}
end;