ich habe in der
DP folgenden Code gefunden um eine Bitmask als Byte darzustellen zB. 11000001 -> 1+2+128 -> 131
Delphi-Quellcode:
function BitmaskToByte(AValue:TBitmask):byte;
var i:integer;
begin
result := 0; // Rückgabewert auf 0 setzten. WICHTIG. Weglassen dieser Zeile kann zu faulen Ergebnisen führen.
for i := 0 to 7 do
if avalue.bits[i] then //Wenn dieser Wert der Bitmaske auf "1" steht, muss das Ergebnis um
Inc(Result, 1 shl i); //2 hoch der Position in der Bitmaske incrementiert werden.
end;
siehe
DP:
http://www.delphipraxis.net/internal...=bitmasktobyte
nun möchte ich die "Umkehrfunktion" haben und habe dazu folgenden Code erstellt:
Delphi-Quellcode:
function ByteToBitmask(AValue:Byte):TBitmask;
var
i,t:integer;
begin
t := 1;
for i := 0 to 7 do
Inc( t, 1 SHL i );
for i := 8 downto 0 do
begin
if AValue>=t then
begin
Result.Bits[i] := True;
AValue := AValue - t;
end
else
Result.Bits[i] := False;
t := t div 2;
end;
end;
kann jemand den aufgeführten Code optimieren oder hat eine bessere Vorgehensweise?
das wäre super!
Thx