Enum und Bitmaske

deepthroat

Erfahrenes Mitglied
Hi!

Also ich beschäftige mich gerade mit NTFS Rechten und somit ACEs und Access Masken. Diese Masken sind im Grunde Bitfelder - d.h. ein einzelnes Bit steht für ein spezielles Recht (z.B. READ bzw. WRITE) je nachdem ob es gesetzt ist oder nicht.

Ich programmiere erst seit 10 Tagen in Visual Basic und bis jetzt habe ich nur gesehen das solche Bits als einzelne Konstanten; also folgendermaßen defniert wurden:
Code:
Const ACE_READ_DATA As Long = 1
Const ACE_WRITE_DATA As Long = 2

Usw. Es wurde höchstens noch von der Möglichkeit gebrauch gemacht, die Werte als hexadezimale Zahlen anzugegeben. Allerdings ist mir das so alles etwas zu umständlich und fehleranfällig. In C/C++ hätte ich die Werte einfach mit Hilfe das Bit-Shift Operators definiert und zwar als enum-Typ.

In Visual Basic wollte ich das Ganze also folgendermaßen schreiben:
Code:
Enum ACE_Bits
  ACE_BIT_READ  = 2 ^ 0
  ACE_BIT_WRITE = 2 ^ 1
  ...
  ACE_BIT_SYNC  = 2 ^ 20

  ACE_READ = ACE_BIT_READ Or ACE_BIT_EXECUTE Or ...
  ...
End Enum

Jetzt meine Frage: Spricht da irgendwas gegen die Verwendung des Potenz Operators (und/oder eines Enums) anstelle der (hexadezimalen) Konstanten? Mir erscheint es nur irgendwie abwegig da die dezimalen/hexadezimalen Zahlen per Hand reinzuhacken wo man doch das so viel besser erkennen kann das da wirklich nur ein Bit gesetzt wird. Daher liegt die Vermutung nahe, das dies irgendwie keine gute Idee ist in VB.

Gruß
 
Zurück