Da sieht man es wieder, Dir fehlt es einfach an den Grundlagen, daher solltest Du dies wohl eher nicht benutzen, es sei denn Du kannst es erklären.
Also,
and spielt in diesem Zusammenhang eine ganz andere Rolle und zwar nicht ein normales and wie als wenn man z.B. zwei Variablen vergleichen würde.
if (i = 0) and (j = 1) then
Das end Vergleicht hier einfach nur als "Boolean, wenn also beides Zutrifft, dann gehts weiter.
Aber wenn Du ein Byte, ein and und ein ZahlenWert einen Bytes dann kannst Du damit Prüfen ob bestimmte Bity eines Bytes 1 oder 0 sind. Das ist etwas blöd zum Erklären.
Also ein Byte hat ja 8 Bits, Bit 0 bis Bit 7.
Bit 0 hat die Wertigkeit 1, das nächste 2, das nächte 4 usw, Bit 7 hat also die Wertigkeit 128. Und wenn alle 8 Bits 1 sind, dann hat Dein Byte den Wert 255. Ganz normale Binärrechnung.
Bei meinem Code, orüft man jedes Bit in dem Byte einzeln ob es 0 oder 1 ist. Wenn es 0 ist dann gehts micht ncihts an und wenn das Bit eine 1 ist, dann muss ich es also Addieren.
if (bByte and 8) <> 0 then iErgebnis := iErgebnis + 8;
Wenn also das Bit 3 ungleich 0 ist, wäre dann also 1, dann muss man ja das Ergebniss um 8 erhöhen.
Ausgeschrieben sieht es dann so aus:
Code:
BitNr.
87654321
00000001 = 1
00000010 = 2
00001000 = 8
Hoffe das es jetzt verständlicher ist.
Grüsse, Daniel