AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zugriff auf einzelne bits einer Variable
Thema durchsuchen
Ansicht
Themen-Optionen

Zugriff auf einzelne bits einer Variable

Ein Thema von earlyperl · begonnen am 15. Apr 2008 · letzter Beitrag vom 15. Apr 2008
Antwort Antwort
Seite 1 von 2  1 2      
earlyperl

Registriert seit: 30. Mai 2004
6 Beiträge
 
#1

Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:28
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
  Mit Zitat antworten Zitat
Benutzerbild von sirius
sirius

Registriert seit: 3. Jan 2007
Ort: Dresden
3.443 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:41
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
Dieser Beitrag ist für Jugendliche unter 18 Jahren nicht geeignet.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:45
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;
Nico Bendlin
  Mit Zitat antworten Zitat
earlyperl

Registriert seit: 30. Mai 2004
6 Beiträge
 
#4

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 11:45
Cool, dankeschön!
Das reicht mir schon.

Grüße
Marco
  Mit Zitat antworten Zitat
earlyperl

Registriert seit: 30. Mai 2004
6 Beiträge
 
#5

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:03
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.
  Mit Zitat antworten Zitat
Benutzerbild von nicodex
nicodex

Registriert seit: 2. Jan 2008
Ort: Darmstadt
286 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:07
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.
Nico Bendlin
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:12
Zitat:
"(Variable and 8) = 8" ist langsamer als "(Variable and 8) <> 0".
oder gleich nach bool casten
Denn so ist es intern ähnlich wie "if (Boolean-Variable <> FALSE)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
earlyperl

Registriert seit: 30. Mai 2004
6 Beiträge
 
#8

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:15
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:18
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
earlyperl

Registriert seit: 30. Mai 2004
6 Beiträge
 
#10

Re: Zugriff auf einzelne bits einer Variable

  Alt 15. Apr 2008, 12:20
Beim Mikrocontroller kann ich ohne Weiteres auf jedes Bit zugreifen,
nur unter Delphi ist das nicht so einfach.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:49 Uhr.
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