Zitat von
Eichhoernchen:
Dann könnt ihr mir bestimmt auch erklären warum das hier nicht klappt:
Klar.
Du speicherst das Ergebnis nicht in einer Variable, sondern benutzt es direkt zum Vergleich. $FF shl 7 ist $7F80. Erst wenn man das Ergebnis in einer Byte-Variable speichert werden die oberen Bits abgeschnitten und man erhält $80.
Das kann man auch durch einen Typecast erreichen:
if Byte(b shl (7-pos)) = $80
Aber auch damit ist deine getbitfrombyte-Funktion falsch. Beispiel: getbitfrombyte($FF, 7) führt zu dem Vergleich "if $FF = $80" --> false, obwohl true herauskommen sollte.
So ist es richtig:
if b shl (7-pos) and $80 <> 0