Gesichtspunkte für geräteübergreifende Object Pascal-Anwendungen
Nach oben zu Gesichtspunkte für geräteübergreifende Anwendungen
Inhaltsverzeichnis
- 1 Der Datentyp "Extended" ist in 64-Bit-Windows-Systemen 2 Byte kleiner
- 2 Stack-Ausrichtungsproblem bei OS X
- 3 Migrieren von Object Pascal-Anwendungen von Win32 zu OS X
- 4 Migrieren von Object Pascal-Anwendungen von Win32 zu Win64
- 5 Migrieren von Object Pascal-Anwendungen von Desktop- zu mobilen Anwendungen
- 6 In Win64 wird das Schlüsselwort "absolute" bei der Interoperabilität zwischen Object Pascal und Appmethod C++ nicht unterstützt
- 7 Beschränkungen des Inline-Assembly-Codes für 64-Bit-Windows
- 8 Siehe auch
Der Datentyp "Extended" ist in 64-Bit-Windows-Systemen 2 Byte kleiner
Der Datentyp Extended ist unter Win64 und Win32 unterschiedlich groß:
- Unter Win64 ist der Typ Extended ein Alias für Double, d. h. 8 Byte groß.
- Unter Win32 ist der Typ Extended (weiterhin) 10 Byte groß.
Unter Win64 bietet der Datentyp Extended daher eine geringere Genauigkeit als unter Win32. Wenn Sie in Ihren Anwendungen den Datentyp Extended verwenden und Genauigkeit, z. B. für Gleitkommaberechnungen, wichtig ist, könnte sich dieser Größenunterschied auf Ihre Daten auswirken.
Hauptsächlich betroffen sind sehr kleine oder sehr große Werte. Die beiden Datentypen haben die folgende Genauigkeit:
- 1x10308 IEEE Double, von Win64 unterstützt
- 1x104932 IEEE Extended, von Win32 unterstützt
Wenn die Codebasis den Datentyp Extended enthält, wird die folgende Hinweismeldung angezeigt: W1066 Erweiterte Genauigkeit für Gleitkommawert verloren gegangen. Verkürzt auf Double (Object Pascal). Gleitkommaoperationen mit einer "extended"-Genauigkeit werden in 32-Bit-Anwendungen, aber nicht in 64-Bit-Anwendungen unterstützt. Unter Win64 ist die Genauigkeit von Gleitkommaoperationen mit Extended-Variablen auf eine doppelte Genauigkeit reduziert.
Mit dem Record TExtended80Rec können Sie mit Gleitkommavariablen mit der Genauigkeit "extended" arbeiten, aber nur zum Lesen und Schreiben aus und in den Arbeitsspeicher und zum Durchführen von Low-Level-Änderungen (Ändern der Mantisse, des Exponenten oder des Vorzeichens).
Weitere Informationen zu 64-Bit-Datentypen finden Sie unter 64-Bit-Windows-Datentypen im Vergleich zu 32-Bit-Windows-Datentypen.
Stack-Ausrichtungsproblem bei OS X
Ein zentrales Problem bei OS X-Anwendungen stellt die Anforderung dar, dass die gesamten Speicherdaten auf dem Stack an 16-Byte-Grenzen ausgerichtet sein müssen:
- Einzelheiten dazu finden Sie im Blog von Eli Boling: http://blogs.embarcadero.com/eboling/2009/05/20/5607.
- Bei Object Pascal-Anwendungen können Sie mit der Direktive Code ausrichten (Object Pascal) 16-Byte-Grenzen festlegen.
- Siehe auch die ALIGN_STACK-Definition in Bedingte Compilierung (Object Pascal).
Migrieren von Object Pascal-Anwendungen von Win32 zu OS X
Die folgende Tabelle gibt einen Überblick über die Plattformunterstützung durch die verschiedenen Bibliotheken in Appmethod:
Bibliothek/Plattform | Win32 | Win64 | Mac OS X |
---|---|---|---|
FMX |
Ja |
Ja |
Ja |
RTL |
Ja |
Ja |
Ja |
VCL |
Ja |
Ja |
Nicht unterstützt |
Hinweis: Die obige Tabelle enthält nur einen groben Überblick über die Bibliotheksunterstützung für Plattformen. Auf bestimmten Plattformen gelten für die Unterstützung der RTL und der VCL Ausnahmen.
Die VCL ist nur unter Windows verfügbar und unterstützt OS X nicht. Anwendungen für OS X sollten mit FireMonkey (FMX) erzeugt werden.
Ein Großteil der Object Pascal-Laufzeitbibliothek (RTL) unterstützt aber alle unterstützten Zielplattformen. Die RTL beinhaltet die Units System, SysUtils und IOUtils und andere, die plattformunabhängige Elemente enthalten.
- Object Pascal-Anwendungen, die nur die RTL (nicht die VCL) verwenden, arbeiten unter OS X (und Win64) mit geringfügigen Änderungen.
- Object Pascal-Anwendungen, die die VCL und/oder die RTL verwenden, unterstützen Win32 und Win64.
Weitere Informationen über die RTL finden Sie unter Verwenden der RTL (Laufzeitbibliothek).
Weitere Informationen über FireMonkey finden Sie unter FireMonkey-Anwendungsplattform.
Migrieren von Object Pascal-Anwendungen von Win32 zu Win64
Die VCL und die RTL werden unter Win32 und Win64 unterstützt.
Weitere Informationen zur Object Pascal-Anwendungsentwicklung für Win64 finden Sie unter 64-Bit-Windows-Anwendungsentwicklung.
Migrieren von Object Pascal-Anwendungen von Desktop- zu mobilen Anwendungen
- Migrieren von Object Pascal-Code zu mobilen Anwendungen vom Desktop aus
- Automatische Referenzzählung in mobilen Object Pascal-Compilern
In Win64 wird das Schlüsselwort "absolute" bei der Interoperabilität zwischen Object Pascal und Appmethod C++ nicht unterstützt
Wenn Sie Object Pascal-Code schreiben möchten, der in Interoperabilität mit den C++-Compilern, die durch Clang erweitert wurden, ausgeführt wird, dürfen Sie die Object Pascal-Direktive/das Object Pascal-Schlüsselwort "absolute" im interface-Abschnitt einer Object Pascal-App nicht verwenden. Sie können das Schlüsselwort "absolute" jedoch im implementation-Abschnitt verwenden.
LLVM bietet keinen Mechanismus, anhand dessen eine Variable eine andere überlagern kann, daher geht Appmethod C++ von einem eindeutigen Symbol für jede Variable aus.
Beschränkungen des Inline-Assembly-Codes für 64-Bit-Windows
Wenn Ihr Quellcode Inline-Assembly-Code enthält, müssen Sie für die Migration des Codes zu 64 Bit gegebenenfalls Änderungen vornehmen. Weitere Informationen finden Sie in den folgenden Themen:
- 64-Bit-Inline-Assembler von Object Pascal
- Konvertieren von 32-Bit-Object Pascal-Anwendungen in 64-Bit-Windows