Zitat von
Cuchulainn:
Double (8 Byte) ist viel größer als Integer (32 Bit). Außerdem würden, wenn es gehen würde, die Nachkommastellen abgeschnitten werden, da Integer ein Ganzzahltyp ist.
Also die Umwandlung selber funktioniert, es werden halt nur die höheren 4 Bytes abgeschnitten, aber da die Werte in einem anderen Format gespeichert sind, kommt nur nicht das erwartete raus.
z.B.:
Delphi-Quellcode:
I: LongInt{Integer}; {4 Byte}
S: Single; {4 Byte}
W: LongWord; {4 Byte}
B: Byte; {1 Byte}
I := Integer(S);
I := Integer(W);
I := Integer(B); {das einzige, was mal geht ^^}
B := Byte(I);
Word zu Integer würde gehn, aber nur solange der Wert in Word maximal 2.147.483.647 ist.
Sobald der Wert größer ist, stimmt es nichtmehr
Integer zu Byte geht auch nur im Bereich von 0 bis 255.
Und bei Single stimmt überhaupt nicht's mehr. Denn Typenumwandlungen dieser art wird nicht der Wert (im Speicher) geändert.