Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachsten? (https://www.delphipraxis.net/59790-byte-wert-8-bool-variablen-anzeigen-wie-am-einfachsten.html)

Helmi 28. Dez 2005 17:00


Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachsten?
 
Hallo,

ich habe ein Byte und 8 Boolsche Variablen.

Wie kann ich am besten die 8 Bool-Variablen je nach Wert des Bytes ansteuern?

gibts da eine procedure dafür oder etwas ähnliches?

alzaimar 28. Dez 2005 17:08

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Komische Frage, weil man Variablen nicht ansteuert...
Um zu prüfen, ob das N.te Bit (N=0..7) gesetzt ist, kannst Du das hier machen:
Delphi-Quellcode:
Function IsBitSet (aByte : Byte; aBit : Byte) : Boolean;
Begin
  Result := (aByte and (1 shl aBit)) <> 0;
End;

Helmi 28. Dez 2005 17:29

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
hallo

sorry - man beschreibt Variablen - man steuert sie nicht an!

Deine function ist leider nicht das was ich brauche.

Ich habe ein Byte und je nach Wert des Bytes sollen die Variablen beschrieben werden.

Dax 28. Dez 2005 17:31

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Delphi-Quellcode:
type
  TBoolByteArray = array[0..7] of Boolean;

function ByteToBoolArray(B: Byte): TBoolByteArray;
var i: Integer;
begin
  for i := 0 to 7 do
    Result[i] := (B shr (7-i)) and 1;
end;
Ist das eher was?

Khabarakh 28. Dez 2005 17:36

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Oder allgemein:
Delphi-Quellcode:
// Binäre Darstellung eine Speicherstelle der Länge ASize (in Byte) als
// dynamisches Boolean-Array
function GetBits(const AValue; const ASize: Cardinal): TBooleanDynArray;
var
  i: Integer;
begin
  SetLength(Result, ASize * 8);
  for i := 0 to ASize * 8 - 1 do
    Result[i] := PByte(Integer(@AValue) + i div 8)^ and (1 shl (i mod 8)) <> 0;
end;
[add] @Dax: Du weißt einem Boolean ein Byte zu :wink: . [/add]

Helmi 28. Dez 2005 17:53

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
@Dax, @Khabarakh: irgendwie bekomm ich eure beiden Functions nicht zum laufen

bei Dax-Function bekomm ich "[Fehler] Unit1.pas(110): Inkompatible Typen: 'Boolean' und 'Integer'" bei
Delphi-Quellcode:
Result[i] := (B shr (7 - i)) and 1;
bei Khabarakh: "Inkomplatible Typen" bei
Delphi-Quellcode:
  SetLength(Result, ASize * 8);
Sorry!

Dax 28. Dez 2005 17:56

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Delphi-Quellcode:
Result[i] := ((B shr (7 - i)) and 1) = 1;
Sorry, so sollts gehen :)

Helmi 28. Dez 2005 17:57

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Zitat:

Zitat von Dax
Delphi-Quellcode:
Result[i] := ((B shr (7 - i)) and 1) = 1;
Sorry, so sollts gehen :)

Du bist spitze! :-)

Vielen Dank - jetzt gehts!

Khabarakh 28. Dez 2005 18:04

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Zitat:

Zitat von Helmi
bei Khabarakh: "Inkomplatible Typen" bei
Delphi-Quellcode:
  SetLength(Result, ASize * 8);

:gruebel: Wo sollen da inkompatible Typen sein? Mit Delphi 6 läuft es jedenfalls :wink: .

Helmi 28. Dez 2005 18:09

Re: Byte-Wert in 8 Bool-Variablen anzeigen - wie am einfachs
 
Zitat:

Zitat von Khabarakh
Zitat:

Zitat von Helmi
bei Khabarakh: "Inkomplatible Typen" bei
Delphi-Quellcode:
  SetLength(Result, ASize * 8);

:gruebel: Wo sollen da inkompatible Typen sein? Mit Delphi 6 läuft es jedenfalls :wink: .

bei dem Result


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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