![]() |
Wieso lässt sich double in integer nicht umwandeln?
Warum sagt der Compiler "ungültige Typenumwandlung" hier? iForm ist ein integer, Angle ist ein Double.
Es MUSS doch gehen, oder? Danke
Delphi-Quellcode:
:gruebel: :wall: :kotz:
iFrom:= integer(Angle)- 45;
|
Re: Wieso lässt sich double in integer nicht umwandeln?
Kuck mal in der Hilfe unter Trunc, Round oder Int. Je nach dem, was du brauchst.
|
Re: Wieso lässt sich double in integer nicht umwandeln?
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.
|
Re: Wieso lässt sich double in integer nicht umwandeln?
@Virchov:
Ich denke, Du solltest mal in Ruhe ein Delphi Grundlagen-Tutorial durchlesen. Ich bin mir sicher, daß Du danach schneller vorwärtskommen wirst. |
Re: Wieso lässt sich double in integer nicht umwandeln?
:oops: :oops: :oops: :oops:
|
Re: Wieso lässt sich double in integer nicht umwandeln?
Zitat:
z.B.:
Delphi-Quellcode:
Word zu Integer würde gehn, aber nur solange der Wert in Word maximal 2.147.483.647 ist.
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); 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. |
Re: Wieso lässt sich double in integer nicht umwandeln?
Hier muss man aufpassen, denn z.B. der FreePascal Compiler fügt z.B. bei "Integer(DoubleVar)" Compiler-Magic ein. Delphi macht das nicht und somit wird auf Byte-Ebene gecastet.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:24 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz