Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Win16<->Win32 Datentyp: real (https://www.delphipraxis.net/71395-win16-win32-datentyp-real.html)

Andy U 14. Jun 2006 14:42


Win16<->Win32 Datentyp: real
 
Hallo,

kann mir hier jemand sagen, wie die real-Werte bein Win16 (Delphi 1) aufgebaut waren/sind??? Und evtl auch, wie man sie einfach in "normale" double-Werte umgewandelt werden können?

Ich bin gerade dabei, typisierte Dateien auszulesen... Jedenfalls ist dort für eine real-Variable genau 6Byte Platz, aber nach welchen Regeln die dort aufgebaut sind verstehe ich irgendwie nicht. Exponent + Mantisse scheint nicht hinzuhauen. Ich habe mal die Bytes einzeln ausgelesen, um festzustellen, wo die Mantisse starten könnte aber:

Wert:
47,8824 -> 134 246 245 245 245 61
48,6667 -> 134 136 135 135 135 63
49,0588 -> 134 60 60 60 60 68
...

Erstens sieht das alles etwas komisch aus, zweitens müssten die Zahlen negativ sein weil 1. Byte > 127 und drittens ändern sich rundweg irgendwie alle Bytes außer die ersten und schließlich viertens finde ich das Bitmuster von 478824 z.B. nicht in der Bitfolge der Bytes...

Wenn jemand eine Idee hat immer her damit! Vielen Dank schon mal im Voraus.


Ich arbeite übrigens gerade mit Delphi6 Prof.

Viele Grüße

Andy



end.

xaromz 14. Jun 2006 14:52

Re: Win16<->Win32 Datentyp: real
 
Hallo,

dafür gibt's doch den Typ Real48, oder?

Gruß
xaromz

Hawkeye219 14. Jun 2006 14:52

Re: Win16<->Win32 Datentyp: real
 
Herzlich willkommen in der Delphi-PRAXiS, Andy!

Wenn es dir nur darum geht, Zahlen im alten Real-Format zu konvertieren, ist vielleicht der Compilerschalter [oh]$REALCOMPATIBILITY[/oh] für dich interessant. Mit ihm kannst du den Typ Real auf den alten Typ "umbiegen". Die neuen Zahlenformate sind unter den Namen Double bzw. Extended weiterhin erreichbar.

Gruß Hawkeye

Andy U 14. Jun 2006 15:18

Re: Win16<->Win32 Datentyp: real
 
Hi,

super dass ihr hie so schnell antwortet! Danke! Habe mich nochmal umgesehen und: tatsächlich ist es real48. Kommt mir trotzdem noch komisch vor... egal, geht. Der Datentyp ist zwar veraltet, lässt sich aber, dank der darauf abgestimmten Hardware, nicht ändern/portieren.


Andy


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:47 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