AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Bits

Ein Thema von Rangarig · begonnen am 9. Jan 2005 · letzter Beitrag vom 10. Jan 2005
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Bits

  Alt 9. Jan 2005, 20:43
Moin Rangarig,

Zitat von Rangarig:
Ja das habe ich so getestet läuft ohne Probleme.
das ist dann aber dem Zufall zuzuschreiben

Zitat von Rangarig:
...wie ich eine Konstante gleich Binär angeben kann?
Nur so, wie Nightshade und Gereon das schon geschrieben haben, mit shl.

Delphi-Quellcode:
const
  Acht = 1 shl 3;
einen Präfix für Binärdarstellung wie $ bei Hexadezimal gibt es in Delphi (leider) nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#12

Re: Bits

  Alt 9. Jan 2005, 20:48
geht auch so

containsbits := Boolean(Wert AND Bitmaske); geht aber nur mit 8 bit glaub ich. Ausprobieren. ansonsten kannst dir ja au

Delphi-Quellcode:
const
  bit00 = $0001;
  bit01 = $0002;
  bit02 = $0004;
  bit03 = $0008;
  bit04 = $0010;
  bit05 = $0020;
  bit06 = $0040;
  bit07 = $0080;
...
  bit31 = $8000;
definieren und prüfen mit

  containsbit := (wert and bit12)<>0;
Power is nothing without TControl
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#13

Re: Bits

  Alt 9. Jan 2005, 20:49
aber dann musst du immer in hex umrechnen....
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Bits

  Alt 9. Jan 2005, 20:51
nicht die schnellste variante aber sie funzt (nehm ich immer)
Delphi-Quellcode:
type
  TBitIndex = Byte;

function SetBit(const AByte: Int64; const ANewBitStatus: Boolean; const ABitIndex: TBitIndex): Int64;
begin
  if ANewBitStatus then
     result := AByte or (1 shl ABitIndex)
  else
     result := AByte and not(1 shl ABitIndex);
end;

function GetBit(const AByte: Int64; const ABitIndex: TBitIndex): Boolean;
begin
  result := AByte = SetBit(AByte, True, ABitIndex);
end;
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#15

Re: Bits

  Alt 9. Jan 2005, 20:54
ich versteh da nur bahnhof...

kannst du das event. ma kurz erläutern?

was is TBitIndex?
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

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

Re: Bits

  Alt 9. Jan 2005, 21:02
Sorry, hab nicht gesehen das ich da nen extra typen verwendet hab. (ist jetz im editierten Beitrag mit drin). TBitIndex gibt an um das wievielte Bit es sich handelt und ist nix anderes als ein Byte.
Ich habs als TBitindex definiert falls ich den Type später noch ändern will (dann brauch ich nur die Typdeclaration ändern und musst das nicht bei allen Proceduren ändern)
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
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
Rangarig

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

Re: Bits

  Alt 10. Jan 2005, 00:39
sry, mir ist vorhin beim Fernsehen aufgefallen, das Eure Funktionen nur ein Bit überprüft, ob es auf 1 gesetzt ist bzw. ob nicht. Ich übergebe meiner Funktion aber eine Maske.
René
Alles sollte so einfach gemacht werden wie möglich, nur nicht einfacher. (Albert Einstein)
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.117 Beiträge
 
Delphi 11 Alexandria
 
#19

Re: Bits

  Alt 10. Jan 2005, 12:51
Moin René,

Zitat von Rangarig:
Ja das habe ich so getestet läuft ohne Probleme.
Dann ist diese Aussage ja doch zutreffend gewesen

Die Funktion sollte dann aber besser TestBits heissen, denn es werden ja mehrere Bits gleichzeitig geprüft.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Rangarig

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

Re: Bits

  Alt 10. Jan 2005, 13:01
Mahlzeit Christian,

Zitat von Christian Seehase:
Die Funktion sollte dann aber besser TestBits heissen, denn es werden ja mehrere Bits gleichzeitig geprüft.
Ja das stimmt demnach sollte der 2. Parameter auch nicht bit sondern mask heißen.
René
Alles sollte so einfach gemacht werden wie möglich, nur nicht einfacher. (Albert Einstein)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 03:59 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