Einzelnen Beitrag anzeigen

Benutzerbild von isilive
isilive

Registriert seit: 15. Okt 2008
Ort: Österreich
192 Beiträge
 
Delphi 2009 Professional
 
#19

AW: Problem mit TColor

  Alt 7. Sep 2010, 00:47
Delphi-Quellcode:
 function TDecodieren.BitToBuch(Bit1, bit2, bit3, bit4, bit5, bit6,
                               bit7, bit8: Integer) : Char;
var
  ZwischenInt : Integer ;
begin
  ZwischenInt := 00000000; // Kann man so lassen ... ist aber witzig :)
  if Bit1 = 1 then
    ZwischenInt := ZwischenInt or 128; // 10000000;
  if Bit2 = 1 then
    ZwischenInt := ZwischenInt or 64; // 01000000;
  if Bit3 = 1 then
    ZwischenInt := ZwischenInt or 32; // 00100000;
  if Bit4 = 1 then
    ZwischenInt := ZwischenInt or 16; // 00010000;
  if Bit5 = 1 then
    ZwischenInt := ZwischenInt or 8; //00001000;
  if Bit6 = 1 then
    ZwischenInt := ZwischenInt or 4; // 00000100;
  if Bit7 = 1 then
    ZwischenInt := ZwischenInt or 2; // 00000010;
  if Bit8 = 1 then
    ZwischenInt := ZwischenInt or 1; // 00000001;
  Result := Chr(ZwischenInt);
Du kannst dem Compiler Dezimalzahlen hinschreiben oder Hexadezimalzahlen (zB: $a000 (in anderen Sprachen oft als 0xa000 geschrieben)), aber keine Binärzahlen (glaub ich zumindest.)

Also wenn schon dann so:

Delphi-Quellcode:
  
j := bit1 + bit2*2 + bit3*4 + bit4*8 + bit5*16 + bit6*32 + bit7*64 + bit8*128;
Result := Chr(j);
wobei es ziemlich schräg ist, dass du die bits als Integer und nicht als Boolean definiert hast. Wenn sie boolean sind müsste es halt heissen:

Delphi-Quellcode:
  j:=0;
  if bit1 then inc(j);
  if bit2 then inc(j,2);
  if bit3 then inc(j,4);
  if bit4 then inc(j,8);
  ...
Stefan
Jedoch kann die referenzbasierte Implementierung des Standard-Objektmodells in Kombination mit den komplexen syntaktischen Dereferenzierungsregeln bei einer objektorientierten API wie ein Stolperstein wirken.
  Mit Zitat antworten Zitat