![]() |
Zugriff auf einzelne bits einer Variable
Hallo,
kann mir jemand verraten, wie ich auf die einzelnen Bits einer Byte-Variable zugreifen kann? In meinem Mikropascal kann ich mittels Variable[0]:=... auf einzelne Bits zugreifen, ich hab aber bisher in Delphi keine Möglichkeit dafür gefunden. Grüße Marco |
Re: Zugriff auf einzelne bits einer Variable
Ob es Funktionen gibt, weiß ich jetzt nicht.
Aber du kannst es ja mit And machen:
Delphi-Quellcode:
(Variable and 1)=1 //1. Bit
(Variable and 2)=2 //2. Bit (Variable and 4)=4 //3. Bit (Variable and 8)=8 //4. Bit ... (Variable and 128)=128 |
Re: Zugriff auf einzelne bits einer Variable
Was genau willst du machen?
ps: Es gibt die Möglichkeit die Bits über ein Set abzubilden, sie über Operatoren zu lesen/manipulieren, oder die Klasse TBits zu verwenden... edit: "(Variable and 8) = 8" ist langsamer als "(Variable and 8) <> 0".
Delphi-Quellcode:
type
PByteBit = ^TByteBit; TByteBit = (bBit0, bBit1, bBit2, bBit3, bBit4, bBit5, bBit6, bBit7); PByteBits = ^TByteBits; TByteBits = set of TByteBit; function TestBit(ABits: TByteBits; ABit: TByteBit): Boolean; {$IFDEF SUPPORTS_INLINE} inline; {$ENDIF} begin Result := ABit in ABits; end; procedure Foo(); var Bar: Byte; begin Bar := 42; if TestBit(TByteBits(Bar), bBit1) then ShowMessage('Hello, World!'); end; |
Re: Zugriff auf einzelne bits einer Variable
Cool, dankeschön!
Das reicht mir schon. Grüße Marco |
Re: Zugriff auf einzelne bits einer Variable
Ich arbeite an einer Programmiersoftware für Mikrocontroller.
Der Controller hat 3 8-bit breite Konfigurationsregister, die ich auslese. Ich habe für jedes Bit eine Checkbox, die je nach Zustand des Bits makiert sein soll, oder eben nicht. |
Re: Zugriff auf einzelne bits einer Variable
Wenn man den Leitungen (Bits) Namen geben kann, dann würde ich immer die Abbildung über ein Set bevorzugen.
(allerdings bedürfen die Set-Operationen erstmal einer gewissen Einarbeitungszeit auf Entwicklerseite) Es gibt viele Wege nach Rom - ist nur die Frage, wieviel man von der Landschaft sehen will :) ps: Für eine konkrete Empfehlung bräuchte man u.a. die Delphi-Version und möglicherweise mehr Informationen. |
Re: Zugriff auf einzelne bits einer Variable
Zitat:
Denn so ist es intern ähnlich wie "if (Boolean-Variable <> FALSE) |
Re: Zugriff auf einzelne bits einer Variable
Mein Gott ist das kompliziert...
Ich habe Delphi 6 Pro. Dein Beispiel mit TestBit funktioniert schonmal super, wenn du mir jetzt noch verrätst, wie ich ein bit setzen kann, währe ich dir sehr dankbar! Gruß Marco |
Re: Zugriff auf einzelne bits einer Variable
ich glaub du solltest dir mal ein Tutorial bezüglich bitoperationen anschauen. Wenn du mit Microcontrollern arbeitest schadet es auf keinen Fall wenn du weißt was auf Bitebene passiert.
|
Re: Zugriff auf einzelne bits einer Variable
Beim Mikrocontroller kann ich ohne Weiteres auf jedes Bit zugreifen,
nur unter Delphi ist das nicht so einfach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz