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 différent sur les différentes plates-formes

La taille du type de données Extended est différente sur chaque plate-forme. Le type Extended fournit la plus grande précision en virgule flottante et dépend du matériel utilisé à l'exécution.

  • Sur les plates-formes Windows 32 bits Intel, la taille du type Extended est (toujours) de 10 octets.
  • Sur les plates-formes Windows 64 bits Intel, le type Extended est l'alias d'un Double, ou 8 octets.
  • Sur les plates-formes Linux 64 bits Intel et macOS 64 bits Intel, la taille du type Extended est de 16 octets.
  • Sur les plates-formes ARM, notamment iOS 64 bits, macOS 64 bits ARM, simulateur iOS ARM 64 bits et Android (32 et 64 bits), le type Extended est l'alias d'un Double, ou 8 octets.

Vous obtenez ainsi une précision inférieure en utilisant le type de données Extended sur les plates-formes Win64 ou ARM par rapport à Win32. Si vos applications utilisent le type de données Extended et si vous accordez une grande importance à la précision, 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, supporté par le type Extended 8 bits sur les plates-formes Windows 64 bits Intel et toutes les plates-formes ARM
  • 1x104932 IEEE Extended, supporté par le type Extended 8 et 16 bits sur les plates-formes POSIX Intel

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 10 octets sont prises en charge dans les applications Windows 32 bits Intel et ne le sont pas dans les applications Windows 64 bits Intel. Sur Windows 64 bits Intel, 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 sur toutes les plates-formes, 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.

Les types de données LongInt et LongWord sont différents sur les plates-formes POSIX 64 bits

Pour conserver l'interopérabilité entre l'API Delphi et POSIX, pour toutes les plates-formes POSIX 64 bits, la taille des types LongInt et LongWord est changée en 64 bits. Toutes les plates-formes 32 bits et Windows 64 bits conservent la taille de 32 bits pour les types LongInt et LongWord.

Prise en charge de la plate-forme cible macOS 64 bits (ARM)

La plate-forme macOS 64 bits (ARM) cible de façon native les processeurs M1 Silicon d'Apple avec macOS 11. Utilisez cette plate-forme pour construire des applications M1 natives (vous devez pour cela utiliser un ordinateur M1).

Remarque: RAD Studio continue à prendre en charge la plate-forme cible macOS 64 bits (Intel) et la création des applications utilisant des fichiers binaires universels, y compris des fichiers binaires ARM et Intel, dans un seul package.

Créez tout type d'applications pris en charge (applications console, applications FireMonkey de base, applications de bases de données FMX, etc.) et exploitez la version universelle incorporée d'InterBase, IBLite.

Fichiers binaires universels

Créez un fichier binaire universel contenant à la fois du code Intel et ARM. Assurez-vous que la plate-forme cible est définie sur macOS 64 bits (ARM). Dans Options de projet, accédez à Construction > Compilateur Delphi > Compilation > Other, et cochez l'option "Générer le fichier binaire universel macOS (x86_64 + arm64)". Déployez l'application. Le gestionnaire de déploiement combine deux fichiers binaires dans un seul fichier binaire "universel" ; avant de transférer l'application vers la plate-forme macOS cible. Le fichier binaire universel se trouve sous le dossier OSXARM64\Debug.

Problème d'alignement de pile sur macOS

Pour les applications macOS, toutes les données mémoire doivent avoir un alignement de pile sur des limites de 16 octets, ce qui pose un problème majeur :

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 64 bits

FMX

Checkmark.svg
Checkmark.svg
Checkmark.svg

RTL

Checkmark.svg
Checkmark.svg
Checkmark.svg

VCL

Checkmark.svg
Checkmark.svg

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 plates-formes.

Des exceptions existent dans la prise en charge de la RTL et de la VCL pour des plates-formes spécifiques. </blockquote>

La VCL est uniquement prise en charge sur Windows et 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 supportées. 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 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, le framework FMX et la RTL sont pris 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 Delphi de Win32 vers Linux64

La VCL et le framework FMX ne sont pas pris en charge sur les plates-formes Linux. Pour le moment, Linux prend uniquement en charge les applications console. Néanmoins, le produit FmxLinux, disponible via le Gestionnaire de packages GetIt, permet d'utiliser Linux comme cible pour les applications FMX. Pour de plus amples informations, consultez la page FireMonkey pour Linux.

Pour le développement d'applications Linux Delphi, voir Développement d'applications Linux.

Migration des applications de bureau Delphi en applications mobiles

Dans les compilateurs C++ basés sur Clang, 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 section interface d'une app Delphi lors 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 de l'assembleur inline

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 les nouvelles plates-formes. Pour plus d'informations, voir les rubriques suivantes :

Pour les plates-formes Windows 64 bits Intel

Pour les plates-formes ARM et POSIX Intel

Ces plates-formes ne prennent pas en charge l'assembleur inline.

Voir aussi