TSearchRec.Attr ist ein Integer wo jedes Bit für ein bestimmtes Attribut steht. Selbst wenn du ohne Bitmaske arbeitest brauchst du nicht alle möglichen Kombinationen. Dazu müsstest du einfach mit der Prüfung des größten Attributes beginnen und wenn TSearchRec.Attr größer ist als das Attribut ziehst du von dem Wert den Wert des Attributes ab:
Delphi-Quellcode:
var
myattribs: Integer;
begin
myattribs := TSearchRec.Attr;
if (myAttribs >= 64) then
begin
myAttribs := myAttribs - 64;
attribut1 := True;
end;
Das wäre aber immer noch eine ganz schlechte lösung weil eben das prüfen der einzelnen Bits bedeutend eleganter ist.
Delphi-Quellcode:
function is_bit_set(bit_index: Integer);
begin
result := ((bit_index and (1 shl bit_index)) <> 0);
end;