Einzelnen Beitrag anzeigen

samso

Registriert seit: 29. Mär 2009
439 Beiträge
 
#12

AW: Integer in Set laden

  Alt 16. Okt 2019, 19:30
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
Code:
nE in Niveaus
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.

Geändert von samso (16. Okt 2019 um 19:54 Uhr)
  Mit Zitat antworten Zitat