Wenn ins Programm 57 eingelesen wird, wie ermittle ich dann welche Niveaus freigeschaltet wurden bei nur 6 Bit?
Das externe Programm speichert Niveau 1 mit 1 ab, 2 mit 2, 3 mit 4, 4 mit 8, 5 mit 16 und 6 mit 32.
Ja, und Du speicherst Niveau 1 mit nA ab, 2 mit nB, 3 mit nC, 4 mit nD, 5 mit nE und 6 mit nF. Sind alle Niveaus von 1 bis 32 freigeschaltet, ist auch nA bis nF gesetzt. Liest Du 57 ein, ist Dein Set: [nA, nD, nE, nF].
Wenn Du wissen willst, ob Niveau 5 freigeschaltet ist, dann ist die Abfrage dazu
Hast Du meinen Quelltext mal ausprobiert?
Vielleicht ist es so klarer:
Delphi-Quellcode:
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
type
TNiveau = (Niveau1, Niveau2, Niveau3, Niveau4, Niveau5, Niveau6);
TNiveauSet = set of TNiveau;
var
Niveaus: TNiveauSet;
NiveauZahl: Byte;
begin
Niveaus := TNiveauSet(Byte(StrToInt('57')));
NiveauZahl := Byte(Niveaus);
if Niveau5 in Niveaus then
WriteLn('Niveau 5 ist freigeschaltet');
end.