Tema: ¿1 Bit?
Ver Mensaje Individual
  #10  
Antiguo 29-09-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.964
Reputación: 29
delphi.com.ar Va camino a la fama
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 [-]
{ Extraída de http://www.clubdelphi.com/foros/showthread.php?t=23514 }
function IntToBase(Value: Integer; const Pattern: string): string;
var
  B, R: Integer;
begin
  Result := '';
  B := Length(Pattern); { Base }
  repeat
    R := Value mod B; { Resto }
    Result := Pattern[R+1] + Result;
    Value := Value div B;
  until Value = 0;
end;

{ Con conjuntos }
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;

{ con operadores lógicos }
procedure TForm1.Button2Click(Sender: TObject);
var
  B: Byte;
begin
  B := $1 or $2 or $10 or $80;
  Caption := IntToBase(Byte(B), '01');
end;

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita