AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Größe von Extended

Ein Thema von Willie1 · begonnen am 30. Jul 2022 · letzter Beitrag vom 31. Jul 2022
Antwort Antwort
Seite 1 von 2  1 2      
Willie1

Registriert seit: 28. Mai 2008
655 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Größe von Extended

  Alt 30. Jul 2022, 18:08
Hallo Leute,
Zitat:
BeschreibungRepräsentiert einen Gleitkommawert mit hoher Genauigkeit.

Der Typ System.Extended bietet eine höhere Genauigkeit, ist aber nicht so einfach portierbar wie andere reellen Typen. Verwenden Sie System.Extended mit Bedacht, wenn Sie Datendateien anlegen, die plattformübergreifend genutzt werden sollen. Beachten Sie Folgendes:

Auf Win32-Systemen beträgt die Größe von System.Extended 10 Byte.
Auf Win64-Systemen ist der System.Extended-Typ aber ein Alias für den Typ System.Double, der nur 8 Byte groß ist. Diese Differenz kann die numerische Genauigkeit von Gleitkommaoperationen nachteilig beeinflussen. Weitere Informationen dazu finden Sie unter Delphi-Gesichtspunkte für plattformübergreifende Anwendungen..
Auf MAC OS X-Systemen beträgt die Größe von System.Extended 16 Byte, um mit BCCOSX kompatibel zu sein.
Der folgende Code zeigt auf Win32 10, auf Win64 8 und auf MAC OS X 16 an.
Zitat aus der Delphi-Hilfe.
Dann ist doch Extended = Double. Was soll dann Extended? Ich habe SizeOf(Extended) benutzt und erhalte 10. Das ist doch nicht Double und stimmt mit der Hilfe nicht überein.
Was ist Extended? Ich hab' Windows 10-64 Bit.
Gruß Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.

Geändert von Willie1 (30. Jul 2022 um 18:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Größe von Extended

  Alt 30. Jul 2022, 18:42
Hallo Willie!
Was ist Extended? Ich hab' Windows 10-64 Bit.
Je nachdem wie du ein Kompilat (Ziel-Platform) erstellst, stell der Typ Extended genau wie die Hilfe es beschreibt dar.
Ähnlichkeit zu einem Double hat es unter Windows 64bit wenn Du auch ein 64bit Kompilat erzeugst.

Ich habe SizeOf(Extended) benutzt und erhalte 10. Das ist doch nicht Double und stimmt mit der Hilfe nicht überein.
Dann war Dein Kompilat für 32bit erstellt und das Ergebnis stimmt mit der Aussage der Hilfe überein.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Willie1

Registriert seit: 28. Mai 2008
655 Beiträge
 
Delphi 10.1 Berlin Starter
 
#3

AW: Größe von Extended

  Alt 30. Jul 2022, 18:59
Hallo CodeZwerg,
ich habe verstanden. Danke.

Dann sollte Embacadero auf die Zielplattform hinweisen. Gerade Delphi wird auch von Anfängern und Hobby- Programmierern genutzt.
Gruß Willie.
Gut hören kann ich schlecht, schlecht sehen kann ich gut - Ersteres stimmt nicht, das zweite schon.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Größe von Extended

  Alt 30. Jul 2022, 19:37
Dann sollte Embacadero auf die Zielplattform hinweisen.
Das tun sie doch?




Die Größe sagt auch garnichts aus.

Die 16 Byte unter OSX ist nur der belegte, aber nicht der verwendete Speicher.



Extended war nie für die direkte Verwendung uns schon garnicht zur Speicherung gedacht.
Also kein Wunder, wenn die CPU-Hersteller diesen Typen beim x64 vergessen nicht beachtet haben.


Die Meisten werden eh nur Probleme bekommen, wenn sie diesen Typen speichern/übertragen und in einer anderen Platform lesen/empfangen.

Oder wenn sie grob fahrlässig binär auf dessen Inhalt zugreifen.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.

Geändert von himitsu (30. Jul 2022 um 19:40 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Größe von Extended

  Alt 30. Jul 2022, 20:06
Hallo CodeZwerg,
ich habe verstanden. Danke.

Dann sollte Embacadero auf die Zielplattform hinweisen. Gerade Delphi wird auch von Anfängern und Hobby- Programmierern genutzt.
Gruß Willie.
Ich gebe Dir Recht und unrecht
Man kann die Aussage der Hilfe schon für voll nehmen aber ich gebe Dir Recht das es missverstanden werden kann.

Erläuterung:
Wenn Du ein 32bit Kompilat hast und auf einem 64bit System ausführst, läuft es im 32bit Subsystem, die Hilfe deutet halt nur im allgemeinen auf ein OS hin.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.445 Beiträge
 
Delphi 12 Athens
 
#6

AW: Größe von Extended

  Alt 30. Jul 2022, 20:51
Ich hab' Windows 10-64 Bit.
Es wäre schon sehr seltsam, wenn die Größe eines Datentyps vom Betriebssystem des Entwicklunsgrechners abhängen würde.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.938 Beiträge
 
Delphi 12 Athens
 
#7

AW: Größe von Extended

  Alt 31. Jul 2022, 10:27
Dann sollte Embacadero auf die Zielplattform hinweisen.
Das tun sie doch?

Die Größe sagt auch garnichts aus.

Die 16 Byte unter OSX ist nur der belegte, aber nicht der verwendete Speicher.



Extended war nie für die direkte Verwendung uns schon garnicht zur Speicherung gedacht.
Also kein Wunder, wenn die CPU-Hersteller diesen Typen beim x64 vergessen nicht beachtet haben.


Die Meisten werden eh nur Probleme bekommen, wenn sie diesen Typen speichern/übertragen und in einer anderen Platform lesen/empfangen.

Oder wenn sie grob fahrlässig binär auf dessen Inhalt zugreifen.
Alsi ich hab' im entsprechenden Hilfetext keinen Hinweis darauf gefunden, dass die Größe von der ausgewählten Build Plattform abhängt.
Ich kann schon verstehen, wenn Novizen ein für Win32 Programm compiliertes Programm unter Win64 ausführen und sich dann wundern, dass
Extended trotzdem 10 Byte groß ist.

Gelesenes Hilfethema:
https://docwiki.embarcadero.com/Libr...ystem.Extended

Daher erfasst:
https://quality.embarcadero.com/browse/RSP-38772

Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#8

AW: Größe von Extended

  Alt 31. Jul 2022, 11:07
System.Extended
Zitat:
On Intel 32-bit Windows systems, the size of System.Extended is 10 bytes.
Jetzt frage Dich doch mal selbst, wenn Du eine 32bit Applikation auf einem 64bit OS ausführst, wird es dadurch automatisch zu einer 64bit Applikation?

//edit
Was ich damit sagen möchte, 32bit app auf 64bit OS = 32-bit Windows system = die Hilfe in welcher Sprache auch immer hat Recht.
Gruß vom KodeZwerg

Geändert von KodeZwerg (31. Jul 2022 um 11:22 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe
Online

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.445 Beiträge
 
Delphi 12 Athens
 
#9

AW: Größe von Extended

  Alt 31. Jul 2022, 11:28
Es geht nicht darum, ob die Hilfe Recht hat oder nicht - was da steht stimmt natürlich. Es kann offensichtlich aber missverstanden werden. Das ist zwar jetzt schon seit einigen Jahren noch nicht passiert, aber irgendwann ist ja immer das erste Mal.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Andreas13

Registriert seit: 14. Okt 2006
Ort: Nürnberg
719 Beiträge
 
Delphi XE5 Professional
 
#10

AW: Größe von Extended

  Alt 31. Jul 2022, 11:40
Hallo,
Zitat:
https://docwiki.embarcadero.com/Libr...ystem.Extended
On Intel 64-bit Windows systems and all ARM systems, including iOS 64-bit, Android 32-bit and 64-bit and macOS 64-bit, however, the System.Extended type is an alias for System.Double, which is only 8 bytes. This difference can adversely affect numeric precision in floating-point operations. For more information, see Delphi Considerations for Multi-Device Applications.

The following code displays 10 on Win32, 8 on Win64 and 16 on macOS and Linux.
Writeln(IntToStr(SizeOf(Extended)));
Das ist leider sehr salopp, irreführend und sogar falsch, denn: unter Windows hängt es ausschließlich von der Zielplattform ab.
Beispiel:

1):
Auf 64-bit Windows Systemen ist Extended bei einem Kompilat für die 32-Bit- Zielplattform immer noch 10 Bytes lang und hat daher die volle Rechengenauigkeit (80 Bit) des seit Anfang der 1990-er Jahre stets integrierten Mathematischen Coprozessors.

2):
Auf 64-bit Windows Systemen ist Extended bei einem Kompilat für die 64-Bit- Zielplattform nur noch 8 Bytes lang und entspricht dem Type Double.

Grüße, Andreas
Grüße, Andreas
Wenn man seinem Nächsten einen steilen Berg hinaufhilft, kommt man selbst dem Gipfel näher. (John C. Cornelius)

Geändert von Andreas13 (31. Jul 2022 um 11:43 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      

 

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 14:24 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