Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Wert eines Bits im String ermitteln (https://www.delphipraxis.net/52992-wert-eines-bits-im-string-ermitteln.html)

gmc616 8. Sep 2005 02:23


Wert eines Bits im String ermitteln
 
Hallo DP,

ich muß eine Datei auslesen die im Header verschiedene Einstellungen hat.
Diese Einstellungen werden mit Flags festgelegt.
In der Doku zu diesem File steht, dass die Flags von Byte x bis Byte y stehen.
Weiter steht dort, dass z.B. das Bit 30 ab Position x einen bestimmten Datensatztyp markiert.

Meine Frage: Wie kann ich ermitteln ob in meinem String (aus der Datei) ein bestimmtes Bit gesetzt ist oder nicht.

Meine Versuche haben entweder alle FALSE oder alle TRUE ergeben.

Für ein Stückchen Code wäre ich sehr Dankbar.

Gruß
gmc

SirThornberry 8. Sep 2005 06:51

Re: Wert eines Bits im String ermitteln
 
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;
du musst berechnen im wievielten Byte das zu prüfende Bit ist und dann übergibst du dieses Byte entsprechend an die Funktion GetBit
Delphi-Quellcode:
var BitGesetzt: Boolean;
begin
  BitGesetzt := GetBit(Byte(DeinString[ByteIndex]), BitIndexDesBytes0Basierend);


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:10 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-2025 by Thomas Breitkreuz