Einzelnen Beitrag anzeigen

Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Speicherbedarf 9 Boolean Werte ist TBitset eine Alternat

  Alt 26. Mai 2006, 13:48
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
  Mit Zitat antworten Zitat