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