Thema: Delphi darf man das?

Einzelnen Beitrag anzeigen

Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.008 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#5

Re: darf man das?

  Alt 5. Nov 2009, 06:24
Zitat von R2009:
Hi,
wer soll dir das verbieten? Du darfst alles was dir Spass macht.
Sowas macht man natürlich nicht weil der Code einfach unlesbar und unkontrollierbar wird.
Aber: wie immer gibts vielleicht doch eine Anwendungsmöglichkeit:
Ich such seit Monaten eine Möglichkeit mit wenig Aufwand Bytes zu manipulieren.

Wenn ich mir folgendes vorstelle:
TBitset=(Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7) set of TBitset; Man müsste sich mal überlegen ob sowas dann wirklich die Bits0 und 2 eines Bytes setzt.

MeinByte := [Bit0,Bit2]; Werd ich auf jeden Fall ausprobieren.

Grüsse
Rainer
Korrekt wäre folgendes:
Delphi-Quellcode:
type
  TBit = (Bit0,Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7);
  TBitSet = set of TBit;

var
  i: Word;
  x: TBitSet;
begin
  x := [];
  i := Word(x); // i = 0

  x := [Bit0];
  i := Word(x); // i = 1

  x := [Bit1];
  i := Word(x); // i = 2

  x := [Bit0, Bit1];
  i := Word(x); // i = 3

  x := [Bit7];
  i := Word(x); // i = 128
end;
Je nach Anzahl Elemente in deinem Enum (Bits) kannst du nur verschiedene Casts deines Sets machen.
Hast du beispielsweise 16 Bits, kannst du nicht in Byte casten, sondern in Word.
Über den Umweg des TE kannst du auch in größere Wertetypen casten, allerdings greifst du dann auf nicht initialisierten Speicher zu - daher Finger weg von sowas.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat