Thema: Delphi Bits

Einzelnen Beitrag anzeigen

Rangarig

Registriert seit: 7. Jan 2005
Ort: Jena
9 Beiträge
 
Delphi 5 Standard
 
#17

Re: Bits

  Alt 9. Jan 2005, 22:21
Dein Funktion glkgereon:
Zitat:
Delphi-Quellcode:
function TestBit(Value : byte; bit : byte) : boolean;
begin
   result:=(Value AND (1 shl bit )) = (1 shl bit);
end;
Aber Schaut diese Funktion nicht das linke Bit neben den in bit angegeben? ODer verstehe ich das nicht.

Das zu prüfende Byte habe ich wie folgt aufgebaut
Delphi-Quellcode:
.
.
.
const
    V1 : byte = 1 shl 0;
    V2 : byte = 1 shl 1;
    V3 : byte = 1 shl 2;
.
.
.
procedure TForm1.Button1Click(Sender: TObject);
begin
   V := V xor V1;
   Flags_Aendern;
end;
.
.
.
procedure TForm1.Flags_Aendern;
var
   b : byte;
begin
   CheckBox1.Checked := TestBit(V, V1);
   CheckBox4.Checked := TestBit2(V, V1);
   CheckBox2.Checked := TestBit(V, V2);
   CheckBox5.Checked := TestBit2(V, V2);
   CheckBox3.Checked := TestBit(V, V3);
   CheckBox6.Checked := TestBit2(V, V3);
end;
.
.
.
function TForm1.TestBit(Value : byte; bit : byte) : boolean;
begin
   result := ((Value AND bit) = bit);
end;
Vieleicht habe ich hier aber auch schon einen Fehler gemacht. TestBit2 ist Funktion, wie [quote="glkgereon"] sie gezeigt hat.


Wenn ich die 0. 2er Potenz (sprich das 1.Bit) nachschauen möchte ob es gesetzt ist mache ich das nach Folgender Gleichung auf den Papier:

00000001 -> zu Prüfende Byte (Value)
00000001 AND -> Prüf Byte (bit)
________
00000001 -> Ergebnis (result)

bzw.:

00000000 -> zu Prüfende Byte (Value)
00000001 AND -> Prüf Byte (bit)
________
00000000 -> Ergebnis (result)
(Beispiel mit 8 Bits)
Zumindest habe ich das in der Berufsschule so gelernt.
René
Alles sollte so einfach gemacht werden wie möglich, nur nicht einfacher. (Albert Einstein)
  Mit Zitat antworten Zitat