AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wieso lässt sich double in integer nicht umwandeln?
Thema durchsuchen
Ansicht
Themen-Optionen

Wieso lässt sich double in integer nicht umwandeln?

Ein Thema von Virchov · begonnen am 29. Mär 2004 · letzter Beitrag vom 29. Mär 2004
Antwort Antwort
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#1

Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 11:41
Warum sagt der Compiler "ungültige Typenumwandlung" hier? iForm ist ein integer, Angle ist ein Double.
Es MUSS doch gehen, oder?

Danke

iFrom:= integer(Angle)- 45;
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 11:43
Kuck mal in der Hilfe unter Trunc, Round oder Int. Je nach dem, was du brauchst.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Cuchulainn

Registriert seit: 26. Aug 2003
182 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 11:44
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.
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.920 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 11:57
@Virchov:
Ich denke, Du solltest mal in Ruhe ein Delphi Grundlagen-Tutorial durchlesen. Ich bin mir sicher, daß Du danach schneller vorwärtskommen wirst.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Virchov

Registriert seit: 15. Mär 2004
Ort: Bäärlin
109 Beiträge
 
#5

Re: Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 13:01
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

Re: Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 13:26
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.
$2B or not $2B
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#7

Re: Wieso lässt sich double in integer nicht umwandeln?

  Alt 29. Mär 2004, 13:30
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz