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.