Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Zugriff auf einzelne bits einer Variable (https://www.delphipraxis.net/112110-zugriff-auf-einzelne-bits-einer-variable.html)

earlyperl 15. Apr 2008 10:28


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

sirius 15. Apr 2008 10:41

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

nicodex 15. Apr 2008 10:45

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;

earlyperl 15. Apr 2008 10:45

Re: Zugriff auf einzelne bits einer Variable
 
Cool, dankeschön!
Das reicht mir schon.

Grüße
Marco

earlyperl 15. Apr 2008 11:03

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.

nicodex 15. Apr 2008 11:07

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.

SirThornberry 15. Apr 2008 11:12

Re: Zugriff auf einzelne bits einer Variable
 
Zitat:

"(Variable and 8) = 8" ist langsamer als "(Variable and 8) <> 0".
oder gleich nach bool casten :wink:
Denn so ist es intern ähnlich wie "if (Boolean-Variable <> FALSE)

earlyperl 15. Apr 2008 11:15

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

SirThornberry 15. Apr 2008 11:18

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.

earlyperl 15. Apr 2008 11:20

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 08:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz