Warum eigentlich 8 Einzelvariablen?
Delphi-Quellcode:
type
TMeinByte = Set of 0..7;
// oder
TNewByte = record
private
function GetBit(idx: Integer): Boolean;
procedure SetBit(idx: Integer; Value: Boolean);
public
Data: Byte; //Data: TMeinByte;
property Bit[idx: Integer]: Boolean read GetBit write SetBit; default;
end;
function TNewByte.GetBit(idx: Integer): Boolean;
begin
Result := Data and (1 shl idx) <> 0; //Result := idx in Data;
end;
procedure TNewByte.SetBit(idx: Integer; Value: Boolean);
begin
if Value then
Data := Data or (1 shl idx) //Include(Data, idx)
else
Data := Data and not (1 shl idx); //Exclude(Data, idx);
end;
den Record könnte man noch mit Operatoren ausrüsten, welchen ihn automatisch in und von Byte umkonvertieren.