Letzlich wird beides auf logische Bitoperationen zurückgeführt, deshalb dürfte der Speicherverbrauch identisch sein. Die Lösung mit Sets bietet sich an, wenn die Flags zusammengehören. Bei der Lösung von Dax ist das Setzen/Lesen der Flags etwas einfacher, der von ihm angegebene Code dürfte aber vom Compiler nicht akzeptiert werden.
Hier eine Korrektur:
Delphi-Quellcode:
type
TFoo = class
private
FBoolFlags: Cardinal;
function GetFlags (aIndex: Integer): Boolean;
procedure SetFlags (aIndex: Integer; aValue: Boolean);
public
property Bool1: Boolean index 0 read GetFlags write SetFlags;
property Bool2: Boolean index 1 read GetFlags write SetFlags;
end;
function TFoo.GetFlags (aIndex: Integer): Boolean;
begin
Result := Odd(FBoolFlags shr aIndex);
end;
procedure TFoo.SetFlags (aIndex: Integer; aValue: Boolean);
begin
if aValue then
FBoolFlags := FBoolFlags or (1 shl aIndex)
else
FBoolFlags := FBoolFlags and (not (1 shl aIndex));
end;
Gruß Hawkeye