Thema: Delphi set of integer?

Einzelnen Beitrag anzeigen

shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#9

Re: set of integer?

  Alt 15. Apr 2004, 17:52
Zitat von Christian Seehase:
Zitat von shmia:
Ein set of char benötigt im Speicher 256 bit = 32 Bytes.
woher hast Du denn das?
Eine Menge kann aus maximal 256 Elemente bestehen deren Wert zwischen 0 und 255 liegen muss, also belegt so ein Set maximal 256 Byte.
Zum Speichern der Information, ob ein Element in einer Menge enthalten ist oder nicht,
wird lediglich ein Bit benötigt.
Die Position des Bits gibt an, welches Element gesetzt ist.

Beispiel:

Delphi-Quellcode:
type
TFarben = (rot, gruen, blau); // Aufzählungstyp mit 3 Elementen (intern als 0-2 gespeichert)

TFarbenSet = Set of TFarben;
// für 3 Elemente werden 3 Bit benötigt; es wird auf die nächste Byte- oder Wortgrenze aufgerundet
// sizeof(TFarbenSet) gibt Auskunft
var
   farben, farben2 : TFarbenSet;
begin
   farben := []; // wird intern als 0b00000000 gespeichert
   farben := [gruen, blau, rot]; // wird intern als 0b00000111 gespeichert
   farben2 := [rot]; // wird intern als 0b00000001 gespeichert

   farben := farben + farben2; // intern wird 0b00000111 OR 0b00000001 berechnet

   if blau in farben then ; // intern wird berechnet: (farben AND 0b00000010) <> 0
Andreas
  Mit Zitat antworten Zitat