Considérations Delphi pour les applications multi-périphériques

De RAD Studio
Aller à : navigation, rechercher

Remonter à Considérations pour les applications multi-périphériques


Le type de données Extended est de 2 octets plus petit sur les systèmes Windows 64 bits

La taille du type de données Extended est différente sur Win64 et sur Win32 :

  • Sur Win64, le type Extended est un alias pour un Double, ou 8 octets.
  • Sur Win32, le type Extended est 10 octets.

Vous obtenez ainsi une précision inférieure en utilisant le type de données Extended sur Win64 par rapport à Win32. Si vos applications utilisent le type de données Extended et que la précision a une grande importance comme pour les opérations à virgule flottante, cette différence de taille peut affecter vos données.

Les valeurs très petites ou très grandes sont les plus affectées. Voici la précision des deux types de données :

  • 1x10308 IEEE Double, pris en charge par Win64
  • 1x104932 IEEE Extended, pris en charge par Win32

Si votre base de code contient le type de données Extended, vous recevrez le message de conseil : W1066 Perte de la précision à virgule flottante étendue. Réduction à Double (Delphi). Les opérations à virgule flottante en précision étendue sont prises en charge dans les applications 32 bits et ne le sont pas dans les applications 64 bits. Sur Win64, la précision des opérations à virgule flottante avec des variables Extended est réduite à la précision double.

L'enregistrement TExtended80Rec peut être utilisé pour travailler avec des variables à virgule flottante en précision étendue, mais seulement pour lire ou écrire en mémoire et pour effectuer des modifications de bas niveau (modification de la mantisse, de l'exposant ou du signe).

Pour de plus amples informations sur les types de données 64 bits, voir Types de données Windows 64 bits comparés aux types de données Windows 32 bits.

Problème d'alignement de pile sur macOS

Pour les applications macOS, un problème majeur est l'exigence que toutes les données mémoire aient un alignement de pile sur des frontières de 16 octets :

Migration des applications Delphi de Win32 vers macOS

Le tableau suivant récapitule comment les différentes plates-formes sont prises en charge par les diverses bibliothèques dans RAD Studio :

   Bibliothèque \ Plate-forme         Win32             Win64              macOS    

FMX

Oui

Oui

Oui

RTL

Oui

Oui

Oui

VCL

Oui

Oui

Non pris(e) en charge

Remarque: Le tableau ci-dessus est une représentation détaillée de la prise en charge des bibliothèques pour les diverses plates-formes.

Des exceptions existent dans le support RTL et VCL pour des plates-formes spécifiques. Par exemple, BDE n'est pas supporté sur Win64 ou macOS.

La VCL est uniquement prise en charge sur Windows et elle ne prend pas en charge macOS. Les applications ciblant macOS doivent être construites avec FireMonkey (FMX).

Par contre, la majorité de la bibliothèque d'exécution Delphi (RTL) prend en charge toutes les plates-formes cible prises en charge. La RTL contient les unités System, SysUtils et IOUtils, ainsi que d'autres, qui contiennent des éléments indépendants de la plate-forme.

  • Les applications Delphi qui utilisent seulement la RTL (pas la VCL) fonctionnent sur macOS (et Win64) avec quelques changements.
  • Toute application Delphi qui utilise la VCL et/ou la RTL supporte Win32 et Win64.


Pour de plus amples informations sur la RTL, voir Utilisation de la RTL (bibliothèque d'exécution).

Pour plus d'informations sur FireMonkey, voir FireMonkey.

Pour de plus amples informations sur la VCL, voir Introduction à la bibliothèque des composants visuels (VCL).}}

Migration des applications Delphi de Win32 vers Win64

La VCL et la RTL sont prises en charge sur Win32 et Win64.

Pour le développement d'applications Delphi Win64, voir Développement d'applications Windows 64 bits.

Migration des applications de bureau Delphi en applications mobiles

Sous Win64, le mot clé 'absolute' n'est pas pris en charge dans Interop entre Delphi et C++Builder.

Si vous voulez écrire du code Delphi qui exécute Interop avec les compilateurs C++ améliorés par Clang, vous ne pouvez pas utiliser la directive/le mot-clé Delphi "absolute" dans la sectio interface d'une app Delphi ors de l'exécution d'Interop avec l'un quelconque des compilateurs C++ améliorés par Clang. Toutefois, vous pouvez utiliser le mot-clé "absolute" dans la section implementation.

LLVM n'offre pas de mécanisme pour l'overlay d'une variable avec une autre. C++Builder suppose donc qu'un symbole unique est utilisé pour chaque variable.

Limitations d'assembleur inline sur Windows 64 bits

Si votre base de code contient du code assembleur inline, il est possible que des modifications du code soient nécessaires pour le portage sur 64 bits. Pour plus d'informations, voir les rubriques suivantes :

Voir aussi