Hallo,
evtl. hilft diese Funktion weiter. "iValue" entspricht z.B. der Byte-Variable.
Und "iBit" legt das zu prüfende Bit fest (beginnend von rechts, wobei 0 dem ersten Bit enspricht).
"FloatToStr" bzw. "StrToInt" werden benutzt, weil "IntPower" Extended zurückgibt. Dies schien mir
der einfachste weg zu sein, um wieder auf Integer zu kommen. Deshalb auch zur Sicherheit
try/except. Gibt sicherlich elegantere Wege, aber läuft.
Viele Grüße
Tom
Delphi-Quellcode:
function CheckBit
( iValue : Integer ;
iBit : Integer ) : Boolean ;
var
iString : String ;
iBitValue : Integer ;
begin
{ Variablen }
iString := FloatToStr(IntPower(2,iBit)) ;
try
iBitValue := StrToInt(iString) ;
except
iBitValue := 0 ;
end ; // try
{ Prüfen und Rückgabe }
result := (iBitValue and iValue = iBitValue) ;
end ;