Hi,
AND OR XOR und NOT geh�ren zur absoluten Basis.
Ist also gut, wenn man danach fragt ;)

Die Grunds�tze wirst Du wahrscheinlich schon k�nnen oder zumindest mal
gesehen haben - ich wiederhole es trotzdem mal.

1 und 0 sind Bits.

A AND B = R
-----------
0     0 = 0
0     1 = 0
1     0 = 0
1     1 = 1 

A OR B = R
-----------
0    0 = 0
0    1 = 1
1    0 = 1
1    1 = 1

A XOR B = R
-----------
0     0 = 0
0     1 = 1
1     0 = 1
1     1 = 0

NOT A = R
---------
    0 = 1
    1 = 0


Das funktioniert nun mit allen Zahlen. Man kann diese ja - wenn man denn
will- in Bit-Folgen darstellen. Nehmen wir mal an, deine eState-Variable
sieht so aus:

eState = DrawItemState.Disabled Or DrawItemState.Default Or
DrawItemState.ComboBoxEdit

das ist gleichbedeutend mit

eState = 4 Or 32 Or 4096 ' 100 Or 100000 Or 1000000000000

und das wiederum mit

eState = 4132            ' 1000000100100

Das Ergebnis kommt durch den OR-Operator zustande. Zum Verst�ndnis schreibt
man die beiden Bit-Felder untereinander und "operiert" jedes einzelne Bit
von oben nach unten.

0000000000100 OR        ' 4
0000000100000     ' 32
----------------
0000000100100     ' 36


0000000100100 OR  ' 36
1000000000000     ' 4096
----------------
1000000100100     ' 4132


Nebenbei:
Auch wenn man es oft sieht und das Ergebnis auch oft das gleiche ist - Es
ist keine Addition! Durch eine Addition kann es hier zu Fehlern kommen, die
man kaum noch findet ;)
4 + 32 + 4096 ergibt zwar erstmal auch 4132. Da man aber nicht mit Zahlen,
sondern mit Variablen arbeitet, k�nnen auch 2 Variablen den gleichen Wert
erhalten (ohne das man es auf den ersten Blick erkennen k�nnte) - dann ist
das Ergebnis dahin.
"4 + 32 + 4 = 40" aber "4 Or 32 Or 4 = 36"




Das auslesen ob ein Flag gesetzt ist oder nicht, macht man (meist) mit dem
AND-Operator. Hierbei werden alle anderen(nicht zu pr�fenden) Bits auf 0
gesetzt. Wenn danach das Ergebnis gleich den Pr�fwert ist, war/ist dar Wert
enthalten.

1000000100100 AND ' 4132
0000000100000     ' 32
-----------------
0000000100000     ' 32


So kann man auch mehrere Werte auf einmal Abfragen.

Viele Gr��e, Wolfgang
http://www.vbwelt.de/






________________________________________
Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im
Auftrag von Oskar Vaia
Gesendet: Montag, 5. Juli 2004 09:54
An: [EMAIL PROTECTED]
Betreff: [Vb.net] FlagsAttribute

Hallo,
�
ich verwende gerade bei der ComboBox.DrawItem-Methode folgende Codezeile
unter anderem:
�
If (eState And DrawItemState.Selected) = DrawItemState.Selected Then
�
�
Kann mir bitte vielleicht jemand erkl�ren, was hier
�
(eState And DrawItemState.Selected)
�
genau passiert? 
Ich hab zwar in der .NET-Doku �ber diese FlagsAttribute-Klasse gelesen,
m�chte das aber aufgrund eines Beispieles vielleicht besser verstehen.
�
Dank und Gr��e
�
Oskar


_______________________________________________
Vb.net Mailingliste, Postings senden an:
[EMAIL PROTECTED]
An-/Abmeldung und Suchfunktion unter:
http://www.glengamoi.com/mailman/listinfo/vb.net

Odpovedet emailem