Hallo Marco,
im Prinzip sollte das so gehen:
x'12 34 56 78' das wären 4 Byte mit bcd-Ziffern
entsprechend
Delphi-Quellcode:
bcdarray = array [1..4] of byte;
ergebnis = cardinal;
ergebnis:= bcdarray[4] and $f;
ergebnis:=ergebnis+((bcdarray[4] shr 4) * 10);
ergebnis:=ergebnis+( bcdarray[3] and $f)* 100);
ergebnis:=ergebnis+((bcdarray[3] shr 4) * 1000);
ergebnis:=ergebnis+( bcdarray[2] and $f)* 10000);
ergebnis:=ergebnis+((bcdarray[2] shr 4) * 100000);
ergebnis:=ergebnis+( bcdarray[1] and $f)* 1000000);
ergebnis:=ergebnis+((bcdarray[1] shr 4) *10000000);
Da ich nur 4 Byte große BCDs kenne hab ich das mal als Beispiel genommen.
U16 deutet natürlich auf 16 Bit =2Byte hin und dann kannst Du Dir die Hälfte sparen.
Gruß
K-H
[edit] Ich hab den real-Datentyp übersehen, aber daß ist im Prinzip das Gleiche nur daß man durch 10/100... teilt ist