Digamos, si utilizas el primer bit de un byte para guardar un dato del tipo boolean (No es lo que hace el tipo boolean)... ¿Porqué no utilizar el resto para guardar 7 valores mas?
Puede hacerse a la antigua, utilizando los opreadores lógicos, por ejemplo marcando un bit con el operador
or y preguntando por este con el
and. O bien en lugar de utilizar este tipo de datos, podemos utilizar SETs... que Delphi los maneja de forma muy inteligente:
Código Delphi
[-]
function IntToBase(Value: Integer; const Pattern: string): string;
var
B, R: Integer;
begin
Result := '';
B := Length(Pattern);
repeat
R := Value mod B;
Result := Pattern[R+1] + Result;
Value := Value div B;
until Value = 0;
end;
procedure TForm1.Button1Click(Sender: TObject);
type
TBits = set of(Bit1, Bit2, Bit3, Bit4, Bit5, Bit6, Bit7, Bit8);
var
B: TBits;
begin
B := [Bit1, Bit2, Bit5, Bit8];
Caption := IntToBase(Byte(B), '01');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
B: Byte;
begin
B := $1 or $2 or $10 or $80;
Caption := IntToBase(Byte(B), '01');
end;
Saludos!