Nouveautés

De RAD Studio
Aller à : navigation, rechercher

Remonter à Accueil

La release RAD Studio 11.1 Alexandria contient les nouvelles fonctionnalités et améliorations suivantes :

Remarque:

Sommaire

Nouvelles améliorations de l'EDI

EDI compatibles avec les résolutions élevées (High DPI)

Les EDI Delphi, C++Builder et RAD Studio sont maintenant compatibles avec les résolutions élevées. La compatibilité avec les résolutions élevées était jusqu'à présent une option d'exécution. Toutes les fenêtres de l'EDI prennent désormais en charge les résolutions élevées, y compris des comportements comme le changement d'échelle lorsqu'elles sont glissées d'un moniteur vers un autre. Les fonctionnalités de l'EDI se rapportent aux éléments suivants :

  • La fenêtre principale
  • Toutes les fenêtres ancrables (Inspecteur d'objets, Projets, Structure et Messages, par ex.), ainsi que tous les éditeurs de propriété de l'inspecteur d'objets.
  • Toutes les boîtes de dialogue (Nouveaux éléments, Options de l'EDI, Options de projet et A propos, par ex.)
  • Toutes les fenêtres de contenu (l'éditeur, les concepteurs de fiches et l'historique, par ex.)

Les styles de l'EDI (Clair, Foncé et Mountain Mist) ont également été mis à jour pour prendre en charge les résolutions élevées.

Résolutions élevées pour le concepteur de fiches VCL

Dans RAD Studio 11.0, le concepteur de fiches VCL gère la mise à l'échelle de trois façons différentes. Pour la personnaliser, accédez à Outils > Options > Interface utilisateur > Concepteur de fiches > Haute résolution. Les options disponibles sont Automatique (PPI de l'écran), Basse résolution (96 PPI) et Modifiable par l'utilisateur, qui permet de définir une valeur PPI spécifique.

Résolutions élevées pour le concepteur de fiches FMX

Le concepteur FireMonkey met à l'échelle une fiche comme s'il s'agissait d'une fiche FMX au moment de l'exécution. Les coordonnées restent les mêmes (c'est-à-dire qu'un bouton placé à (20, 20) conserve les coordonnées (20, 20) quelle que soit la mise à l'échelle High DPI du moniteur sur lequel se trouve le concepteur FMX.) La mise à l'échelle est uniquement visuelle.

Page d'accueil

Une nouvelle page Bienvenue basée sur la VCL a été ajoutée à l'EDI. Elle est conçue pour :

  • Vous permettre d'ajouter ou de supprimer plusieurs cadres, mais aussi de redéfinir leur taille et leur position comme vous le souhaitez
  • Etre mise correctement à l'échelle avec des résolutions élevées
  • Utiliser notre propre technologie

Modifications relatives à l'API Open Tools

Toutes les API qui transmettent des images, comme les services d'écran d'accueil, la boîte de dialogue A propos, IDE Insight et d'autres éléments, ont été mises à jour pour prendre en charge les images haute résolution (High DPI). Vous pouvez ainsi transmettre plusieurs résolutions d'une même icône, qui sont ajoutées à la collection d'images internes et utilisées avec une liste d'images virtuelles. Bien que ces méthodes prennent en charge un large éventail d'éléments TGraphic, nous vous recommandons d'utiliser des images PNG.

Styles VCL dans le Concepteur

Vous avez la possibilité, en option, d'afficher les contrôles VCL en utilisant les styles du Concepteur.

Avertissement: Cette fonctionnalité n'est pas activée par défaut et peut l'être dans la boîte de dialogue Options des outils, section Interface utilisateur > Concepteur de fiches. Il s'agit de l'option Activer les styles VCL.

L'éditeur de propriété StyleName présente les styles disponibles dans le projet et renvoie un aperçu (de l'apparence du bouton). Notez que si vous sélectionnez "Windows", le style est appliqué à la plate-forme, et que si vous laissez la propriété vide, le style du contrôle parent (ou de la fiche parent) est utilisé.

Notez que le Concepteur de fiches VCL comporte maintenant une barre de titre et un cadre de style Windows 10 personnalisé, au lieu d'utiliser le cadre Windows classique. Si aucun style de fiche n'est défini, le style Windows 10 est utilisé. Si la fiche est définie pour utiliser un style VCL, le cadre reflète le style sélectionné.

Conception de fiches et édition de code

Dans la release 10.4.2, l'onglet Conception était désactivé lorsqu'une fiche était en cours de conception dans une autre fenêtre. Maintenant, l'onglet reste activé, mais vous êtes averti par un message qu'une fiche est en cours de conception dans une autre fenêtre. Cliquez sur un bouton pour placer le Concepteur dans la fenêtre en cours.

Performance de la boîte de dialogue Options

Les boîtes de dialogue Options (EDI et Options de projet) se chargent beaucoup plus rapidement que dans les releases précédentes. Avant, toutes les pages étaient chargées lors de l'ouverture de la boîte de dialogue. Maintenant, une page est chargée (et les contrôles sont créés) uniquement lorsqu'elle doit être affichée.

Les fournisseurs tiers doivent être informés de ce changement qui impacte les cadres de leurs composants.

Marges et directives de conception FireMonkey

Dans la version 11.0, le concepteur FireMonkey inclut des directives et d'autres fonctionnalités déjà présentes dans le concepteur VCL, avec une implémentation différente. Lorsque vous déplacez ou redimensionnez des composants, des conseils s'affichent. Une ligne transversale vous indique l'alignement latéral correct et la distance standard des marges des contrôles.

Les contrôles de redimensionnement de la fiche et des composants ont maintenant la même apparence que le Concepteur de fiches VCL.

DelphiLSP pour Visual Studio Code et autres éditeurs

Dans RAD Studio 11.0, vous pouvez utiliser DelphiLSP avec d'autres éditeurs. C'est pourquoi nous avons créé une extension Visual Studio Code utilisant DelphiLSP.

Pour de plus amples informations sur cette fonctionnalité, reportez-vous ici.

Améliorations de l'audit de code (DelphiLSP)

DelphiLSP

Dans RAD Studio 11.0, LSP met l'accent sur la qualité et est une alternative solide à l'audit de code classique. Parmi les principales améliorations, citons l'analyse des unités comportant des fichiers include, le moment le plus adapté pour redémarrer le serveur et les améliorations relatives aux éléments de syntaxe compris par le serveur.

Suppression de l'achèvement de code classique

L'achèvement de code classique Delphi a été supprimé de l'EDI. Seule l'option LSP est disponible pour l'audit de code Delphi.

Avertissement concernant les Evénements de construction

Les événements de construction exécutent des commandes arbitraires sur votre système. Il est courant de récupérer des projets incluant des événements de construction provenant de fournisseurs tiers en ligne. Maintenant, RAD Studio vous avertit lorsqu'un projet contient un événement de construction, quelle que soit sa configuration (même la construction n'est pas en cours).

Avertissement: Il est possible qu'un projet soit marqué comme fiable, que vous récupériez une nouvelle version modifiée et que vous ne soyez pas averti qu'il contient un nouvel événement de construction. Cette mesure de sécurité est utile, mais ne doit pas être considérée comme totalement efficace dans toutes les situations.

Autres modifications relatives à l'EDI

L'éditeur de code utilise maintenant la police Consolas comme police par défaut. D'autres polices de codage courantes, comme Fira Code, sont installées avec l'EDI. Notez que l'éditeur ne prend pas en charge les ligatures, mais il renvoie le texte haute résolution avec netteté en utilisant ces nouvelles polices. La commande "Voir les messages" a été restaurée dans le menu contextuel de l'éditeur.

La barre de progression de l'audit de code est masquée une fois l'opération terminée.

Améliorations relatives à la chaîne d'outils Delphi

Nouvelle plate-forme cible macOS ARM 64 bits

RAD Studio 11.0 prend en charge une nouvelle plate-forme cible Delphi, macOS ARM 64 bits, pour cibler de façon native les nouveaux processeurs M1 Silicon d'Apple avec macOS 11. Vous pouvez utiliser cette plate-forme pour construire des applications M1 natives (vous devez bien sûr pour cela utiliser du matériel M1). Nous continuons à prendre en charge la plate-forme cible Intel 64 bits et la création des applications utilisant des fichiers binaires universels, y compris des fichiers binaires ARM et Intel, dans un seul package. Pour de plus amples informations, voir les pages DCCOSXARM64 et DCCOSXARM64.EXE, le compilateur Delphi pour le périphérique macOS 64 bits.

Fichiers binaires universels

Vous pouvez créer un fichier binaire universel contenant à la fois du code Intel et ARM. Pour cela, la plate-forme cible doit être une plate-forme macOS ARM 64 bits. Dans Options de projet (si la plate-forme cible actuelle est une plate-forme macOS ARM 64 bits), accédez à Construction > Compilateur Delphi > Compilation > Autre, et cochez l'option "Générer le fichier binaire universel macOS (x86_64 + arm64)". Déployez l'application. Le fichier binaire universel se trouve dans le dossier OSXARM64\Debug.

Dépréciation de macOS

Dans la release 11.0 de RAD Studio, l'unité Macapi.QTKit n'est plus prise en charge sur macOS/X64 et a été supprimée de la bibliothèque macOS/Arm64. Dans ce produit, nous avons également supprimé l'unité "Macapi.Quicktime" des bibliothèques macOS/X64 et Arm64.

Littéraux binaires et séparateur numérique

The Delphi language in Olympus adds support for binary literals, in addition to decimal and hexadecimal ones. A binary literal uses the % symbol as a prefix (the same syntax used by other Pascal compilers):

const
  Four = %100;
var
  x: Integer;
begin
  x := %1001001;

The language also introduces a digit separator that can be used to improve the readability of literal values with many digits. The separator is the underscore “_” and it is basically ignored when parsing and compiling the code. This is very similar to the feature introduced in C# 7.0.

const
  AMillion = 1_000_000;

Of course, you can use the digit separators for binary literals.

Prise en charge de l'assembleur en ligne pour les instructions AVX (AVX-512)

Nous avons introduit la prise en charge du code asm pour les jeux d'instructions les plus récents, y compris AVX2 (ymm) et AVX512 (zmm).

Attention: Pour tester cette fonctionnalité, vous devez disposer d'un processeur compatible AVX-512 (comme celui des processeurs INTEL récents). Pour plus d'informations, rendez-vous sur :

https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512}}

Pour de plus amples informations, consultez Prise en charge de l'assembleur intégré pour AVX2 et AVX-512

Améliorations relatives à la chaîne d'outils C++

Nouveau formateur de code C++

La technologie de formateur de code utilisée pour C++ a été entièrement remplacée. Le formatage de code utilise maintenant le format clang. Les nouvelles options du formateur de code C++ sont accessibles dans Langage > C++ > Formatage. Soit vous formatez le code manuellement comme avant, soit l'EDI le fait automatiquement lorsque vous enregistrez, voire lorsque vous tapez. Ces deux dernières options sont contrôlées par le paramètre de formatage automatique, qui permet de formater lors de l'enregistrement ou lors de l'ajout d'une nouvelle ligne.

L'EDI utilise les paramètres de format spécifiés par un fichier .clang dans le dossier source, une convention de projet C++ courante. S'il n'en trouve pas, il utilise le format choisi dans la boîte de dialogue Options (ci-dessus), soit le formatage par défaut recommandé par Embarcadero.

Compatibilité C++/Delphi

Nous proposons maintenant des informations RTTI compatibles C++ pour les types Delphi. Vous pouvez utiliser make_shared sur un type Delphi, et vous servir des conversions de type pour exploiter facilement les types Delphi dans C++.

RTTI compatible C++ pour les types Delphi

Avant, les informations des types C++ n'étaient pas disponibles pour les types Delphi. L'accès au résultat de typeid(delphi-type), où delphi-type est un type provenant du code Pascal ou bien une classe de style Delphi dans C++, générait une violation d'accès. Notez que typeid renvoie une valeur std::typeinfo pour un type simple, ou le type le plus dérivé de cette instance pour un type polymorphique.

typeid() renvoie maintenant une valeur std::typeinfo, et des informations RTTI compatibles C++ sont générées pour des types Delphi.

Utilisation de pointeurs intelligents avec des classes Delphi

Vous pouvez maintenant utiliser les constructeurs std::make_unique et std::make_shared sur une classe de style Delphi (l'un défini dans Delphi, ou dans C++ mais hérité d'un autre défini dans Delphi.)

Conversions de types

La RTL inclut maintenant des méthodes utilitaires pour les conversions de types entre les types Delphi et les chaînes C++ (et Delphi). Il est possible de convertir des types TDateTime en types chaîne, mais aussi de convertir (assigner) facilement une chaîne C++ en chaîne Delphi, et d'utiliser std::string_view sur une chaîne Delphi. Conversions de types en chaînes et inversement Vous pouvez maintenant utiliser les méthodes to_string() et from_string() pour convertir de nombreux types en chaînes et inversement (UnicodeString, WideString et AnsiString, y compris à partir de modèles par page de code). Ces méthodes existent pour les types suivants :

  • Currency
  • TDateTime
  • Types entiers signés et non signés sur 32 bits et 64 bits
  • Types virgule flottante (comme Extended)
  • Variants

Autres

  • Le compilateur Clang émet maintenant un avertissement lorsqu'une interface n'est pas dérivée de IUnknown.
  • Vous pouvez effectuer un attachement à un processus en utilisant le débogueur C++ Win64.
  • Le problème suivant a été résolu : les fichiers .c étaient ignorés lors de la compilation groupée d'un projet.

Modifications relatives à FireMonkey et à la VCL

Dans RAD Studio 11.0, nous avons apporté un grand nombre de petites améliorations à la bibliothèque VCL, principalement axées sur l'élimination de "traces restantes" de XP et des incohérences avec Windows 10. Les fonctionnalités principales de la bibliothèque ont également été améliorées.

Composant TRichEdit mis à jour vers RichEdit 4.1 (MSFTEDIT.dll)

Nous avons mis à jour l'implémentation du composant TRichEdit de la VCL pour prendre en charge une version plus récente du contrôle. Par ailleurs, TDBRichEdit.Lines est maintenant une propriété publique. La détection d'URL RichEdit comporte de nouvelles fonctionnalités comme EnableURLs, ShowURLHint et SetSelTextToFriendlyURL.

Certaines modifications ont été apportées aux attributs texte RichEdit. Ils comportent maintenant des propriétés supplémentaires, comme BackColor, Disabled, Hidden, Link, Offset, RevAuthor et Subscript.

TParaAttributes comporte également de nouveaux types cpaAlignment, cpaNumbering, cpaFirstIndent, cpaLeftIndent, cpaRightIndent, et cpaTabStops. Il possède également une nouvelle propriété, ConsistentAttributes.

Enfin, TCustomRichEdit a maintenant une nouvelle méthode publique, RenderRange.

Modernisation de la VCL

Nouvelle police par défaut

Pour les applications VCL, la police par défaut est maintenant Segoe UI 9. La police des titres des styles VCL est adaptée à la même police par défaut.

Marges Memo et RichEdit

Nouvelle propriété dans TCustomMemo, publiée dans TMemo, TDBMemo, TRichEdit, TDBRichEdit.

Radiogroup sans cadre

Dans TCustomGroupBox, cette propriété publique est publiée dans TGroupBox. Elle contient ShowFrame, HeaderFont et DefaultHeaderFont.

DropDownWidth pour TComboBox

TCustomComboBox et ses descendants comportent deux nouvelles propriétés (DropDownWidth et AutoDropDownWidth). Elles sont publiques dans la classe TCustomComboBox et publiées dans la classe TComboBox.

Prise en charge de TTreeView pour les cases à cocher (CheckBoxes)

Maintenant, TTreeView définit de nouvelles propriétés prenant en charge des composants CheckBoxes. Apprenez-en plus ici.

Prise en charge multi-cadre de TWICImage

Prise en charge multi-cadre de TWICImage : le type TWICImage comporte 2 nouvelles propriétés définies en tant que FrameCount et FrameIndex. Ensemble, ces deux propriétés vous permettent de lire tous les cadres valides dans un fichier image comportant plusieurs cadres.

Nouveau composant TLabelDBEdit

Il existe maintenant une version orientée données du contrôle VCL TLabeldEdit. Pour l'implémenter, la hiérarchie des contrôles associés a changé :

  • TCustomLabeledEdit
  • hérite de TCustomMaskEdit
  • nouvelles propriétés : Align, EditMask, etc. héritées de TCustomMaskEdit
  • TDBEdit
  • hérite de TCustomLabeledEdit
  • TDBLabeledEdit
  • nouveau contrôle qui hérite de TDBEdit

Par ailleurs, RAD Studio 11.0 prend désormais en charge le contrôle TLabeledEdit dans les conteneurs TFlowPanel et TGridPanel.

Améliorations relatives aux messages d'erreur

  • Lorsqu'une fiche est créée depuis un flux, le message d'erreur associé inclut maintenant le nom du fichier fiche.
  • La boîte de dialogue Exception comporte un bouton "Copier" supplémentaire pour copier le message d'erreur dans le presse-papiers.

Prise en charge des chevrons par Coolbar

Coolbar prend en charge les chevrons via une nouvelle propriété booléenne ShowChevron.

NumberBox

La classe TNumberBox introduite dans la release 10.4.2 comporte quelques fonctionnalités supplémentaires :

  • Le type CurrencyFormat a été changé de Byte en TNumberBoxCurrencyFormat.
  • Une nouvelle propriété ValueCurrency a été ajoutée.
  • La propriété DisplayFormat est maintenant publiée.

Amélioration de la sécurité des threads

En général, les contrôles d'interface utilisateur sont créés dans le principal thread d'interface utilisateur. Si vous créez un contrôle VCL dans un thread secondaire, son comportement ne sera pas défini et pourra entraîner des violations d'accès relativement masquées.

C'est pourquoi nous avons ajouté une nouvelle propriété de classe : TControl.RaiseOnNonMainThreadUsage

Lorsque cette propriété est définie sur True, la VCL déclenche une exception en cas de création d'un handle de fenêtre TWinControl dans un thread autre que le thread principal. Ainsi, une création accidentelle de handle ne génère pas de problèmes. Dans les scénarios COM et d'autres cas, la création d'un handle dans un thread secondaire est légitime et reste donc autorisée.

Fichier StyleUtils.inc de la VCL converti en unité ordinaire

Le fichier include StyleUtils.inc a été converti en unité ordinaire, ce qui permet aux développeurs (et aux fournisseurs de composants) d'intégrer leur code en prenant en charge les styles VCL. Le fichier include antérieur définissait des types privés généralement impossibles à modifier et à étendre, contrairement à la nouvelle unité.

Attention: Bien que l'intégration de code dans l'unité soit tolérée et que certains types de données aient été rendus publics et accessibles, nous nous réservons le droit d'apporter des modifications à cette API des styles. Par ailleurs, nous ne pouvons pas garantir le même niveau de compatibilité avec le code externe généralement fourni par les bibliothèques VCL et RTL.

Modifications mineures

  • Les boîtes de dialogue communes exposent maintenant les propriétés EncodingIndex et ShowEncodingList, avec pour conséquence le contrôle de l'activation de la liste déroulante de codage et sa disponibilité).
  • Evénement OnTracking pour TTrackbar (déclenché lorsque la position du curseur de défilement change sur la barre des tâches).
  • Les options de contournement ont été désactivées dans TPageControl.FindNextPage avec un paramètre CheckTabEnabled supplémentaire.
  • TButtonCategory comporte une propriété VisibleGutter.
  • TDateTimePicker et TRichEdit s'affichent correctement lorsqu'ils ne sont pas activés.
  • Dans cette release, TScrollBox prend automatiquement en charge la molette de la souris. Notez que cette modification peut avoir un effet non désiré sur le comportement des applications existantes, car le défilement avec la molette de la souris est maintenant activé par défaut pour les contrôles, sans focalisation.
  • La fonction VCL ScaleImage prend en charge le canal Alpha.
  • TVirtualImageList.Images a son propre définisseur de propriété.
  • TTreeNode assure la prise en charge de l'état nsDropHilited.
  • La taille par défaut de la fiche est désormais supérieure.
  • SetSelText et SetSelTextBuf offrent la possibilité de ne pas redéfinir le tampon d'annulation.
  • Cette fonctionnalité est gérée par la nouvelle propriété CanUndoSelText. Elle est définie sur False par défaut, ce qui assure la rétrocompatibilité. Lorsqu'elle est définie sur True, elle permet d'appeler la méthode Undo (ou d'invoquer une opération d'annulation avec l'interface utilisateur) pour annuler une modification apportée suite à l'appel de SetSelText ou SetSelTextBuf ou à des affectations à la propriété SelText.
  • Petites améliorations apportées à TEdgeBrowser.
  • TCustomTitleBarPanel comporte maintenant des propriétés TitleButtonClose, TitleButtonRestore, TitleButtonMin, et un événement OnUpdateTitlebarButtons.
  • TDateTimePicker permet de changer à la fois la date et l'heure dans l'interface utilisateur
  • Un objet TPngImage gère l'assignation à et depuis un objet TWICImage
  • TWinControl prend maintenant en charge LockDrawing et UnlockDrawing, déclenchant l'exécution du message Windows WM_SETREDRAW :
  • La méthode TWinControl.LockDrawing désactive la mise à jour du contrôle
  • La méthode TWinControl.UnlockDrawing active la mise à jour du contrôle
  • La propriété TWinControl.IsDrawingLocked renvoie True si LockDrawing a été appelé (et si UnlockDrawing n'a pas été appelé)
  • La propriété TWinControl.RedrawDisabled renvoie True lorsque le dessin du contrôle Win32 est désactivé

FireMonkey

Dans FireMonkey, nous nous sommes concentrés sur le refactoring, notamment sur les ordinateurs de bureau et Windows en particulier. Les services de plates-formes pour macOS et Windows ont subi un refactoring en unités distinctes, IFMXMultiDisplayService et TDisplay ont été étendus, tous les services associés aux métriques ont été extraits dans FMX.Platform.Metrics, la taille des fiches a été limitée et un refactoring a été appliqué aux composants suivants :

  • IFMXSaveStateService
  • IFMXDeviceService
  • IFMXVirtualKeyboardService
  • IFMXTimerService
  • IFMXLoggingService
  • IFMXMenuService

Le composant TWebBrowser pour Windows assure maintenant la prise en charge de Chromium Edge via le composant WebView 2 de la plate-forme, de la même façon que le composant VCL TWebBrowser existant. Vous pouvez sélectionner le moteur du navigateur à l'aide de la nouvelle propriété WindowsEngine de TWebBrowser.

Bibliothèque de facturation Google Play Billing version 4

RAD Studio 11.0 assure la prise en charge de la dernière version de l'API de facturation Google. La mise à jour va devenir obligatoire pour les applications Play Store au plus tard en novembre 2021. La nouvelle API est intégrée de façon transparente avec la bibliothèque FMX et votre code devrait s'adapter facilement à la nouvelle API.

Prise en charge de l'API 30 Android

La prise en charge de l'API 30 Android inclut les modifications suivantes

  • Prise en charge de l'API 30 Android (exigée par Google Play Store en 2021)
  • Nous avons également migré d'anciennes bibliothèques « de support » vers les nouvelles bibliothèques « AndroidX »

Par ailleurs, pour Android, RAD Studio prend maintenant en charge la fonctionnalité « multidex » (qui permet à votre application de générer plusieurs fichiers « classes.dex ») et utilise le compilateur DEX "D8" plus récent à la place de l'ancien "DX" pour compiler le bytecode Java en DEX. Les nouvelles releases incluent un ensemble différent de bibliothèques Java, ce qui rend les anciens projets incompatibles. Lorsque vous ouvrez un build de projet Android avec une ancienne version de RAD Studio, vous devez :

  • Accéder à la fenêtre ancrable Projets.
  • Sélectionner Android 32 bits ou 64 bits comme plate-forme cible active.
  • Cliquer avec le bouton droit de la souris sur le nœud Bibliothèques.
  • Cliquer sur l'élément de menu Revenir aux valeurs par défaut des fichiers système.

Améliorations supplémentaires

  • Le pack d'accessibilité Firemonkey est maintenant intégré dans le produit principal (au lieu d'être téléchargeable séparément)
  • Amélioration de la gestion de l'ordre Z pour les combinaisons de styles et les contrôles de plates-formes
  • Suppression des anciennes valeurs énumérées sans portée devenues obsolètes (soit les classes utilitaires FMX ajoutées pour prendre en charge les énumérations obsolètes en 2014)
  • Prise en charge du chargement de fichiers dans TWebBrowser sur la plate-forme Android

RTL et données

Nous avons apporté de nombreuses améliorations aux bibliothèques principales de RAD Studio. Voici en synthèse les principales modifications apportées aux bibliothèques client RTL, FireDAC, HTTP, REST et autres.

Identificateurs des plates-formes

La RTL ajoute un nouvel identificateur de plate-forme, pidOSXArm64 pour la plate-forme macOS/Arm64. Les identificateurs pidAndroid32Arm et pidAndroid64Arm existants sont remplacés par les nouveaux identificateurs pidAndroidArm32 et pidAndroidArm64. Maintenant, tous les identificateurs associés à la plate-forme utilisent un format et une forme identiques à ceux des compilateurs : <Nom de la plate-forme> <Nom de l'architecture> <Nombre de bits>

RTL : TZipFile

Nous avons mis l'accent sur la qualité, l'amélioration et l'optimisation des fichiers ZIP (c'est-à-dire, la classe TZipFile de la RTL). Zip64 est maintenant pris en charge et une méthode permettant de supprimer un fichier dans TZipFile a été ajoutée. Par ailleurs, TZipHeader comporte une méthode GetFIleName, TZipFile.IsValid() accepte un paramètre Stream et System.Zip fonctionne avec des fichiers d'une taille supérieure à 4 Go.

Améliorations relatives aux grandes structures de données de la RTL

Nous avons apporté quelques améliorations pour utiliser correctement les types de données des larges structures de mémoire des compilateurs 64 bits. Par exemple, TMemoryStream prend en charge des structures de données supérieures à 2 Go en 64 bits. C'est pourquoi nous avons ajouté la nouvelle méthode TThread.GetTickCount64 (et conservé la méthode TThread.GetTickCount actuelle dans la RTL à des fins de compatibilité, car elle renvoie une valeur 32 bits).

Nouvelles assistances d'enregistrements

Une nouvelle assistance d'enregistrement a été ajoutée pour TDateTime. Elle inclut une fonction "UTC Now" (non disponible dans la RTL de date d'origine) et s'appelle NowUTC. Cette release introduit également une assistance pour le type de données TCurrency dans Delphi. Il s'agit de TCurrencyHelper, qui est similaire à TDoubleHelper.

Améliorations relatives à la prise en charge Bluetooth et BLE

Les améliorations dans ce domaine concernent le Bluetooth classique, Bluetooth LE et la plupart des plates-formes, en particulier Windows 10 et Android (mais également iOS et macOS). Les améliorations incluent également la prise en charge des beacons.

Améliorations supplémentaires de la RTL

Améliorations relatives aux collections génériques

When using multiple generic types, some generic collections used to have TKey and TValue as symbolic names for the generic types. Now this is confusing as TValue is a specific type in the RTL. To avoid any confusion the symbolic names have been changed. There is no effect to existing code, as the symbolic names are replaced with concrete types when the generic types are instantiated. Additionally, there are few additional constructors for collection classes, that take as parameters an array of values, including:

procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);
virtual;
constructor TList<T>.Create(const Values: array of T);
constructor TDictionary<TKey, TValue>.Create(const AItems: array of TPair<TKey, TValue>);

The implementation of TDictionary Capacity, GrowThreshold and hashing has been improved, with a better balance of performance / memory usage / minimal collisions. The internal implementation class TListHelper has been removed in favor of using a strongly typed field TArray<T>, updating all related streaming and data mapping code.

RTTI

Prise en charge des tableaux ouverts via les informations RTTI : permet d'invoquer des méthodes avec un paramètre de tableau ouvert via les informations RTTI et de prendre également en charge des arguments tableaux ouverts dans TVirtualMethodInterceptor. TValue ajoute la prise en charge spécifique de TDateTime. Enfin, l'échange entre TValue et le type Variant a été amélioré.

PPL

Nous avons facilité l'accès aux statistiques du pool de threads PPL en rendant la méthode TThreadPoolStats.Get publique.

Flux

La nouvelle classe TPointerStream permet de lire et d'écrire des données en mémoire en utilisant l'interface TStream, par l'indication de la taille et de l'emplacement du pointeur. TStream.CopyFrom ne nécessite pas d'indication sur la taille, qui n'est pas toujours connue. La méthode a également été optimisée pour les comptages élevés (jusqu'à 400 % d'amélioration).

Conversion de dates en chaînes

Les conversions de dates en chaînes et les conversions inversées ont été améliorées. Notez que désormais StrToDate suit strictement la chaîne de format "to date", prend en charge les formats de date avec les noms de mois et de jour, et prend en charge les formats de date contenant du texte arbitraire. Enfin, l'initialisation des propriétés associées à la date/heure TFormatSettings a été améliorée et la représentation a été unifiée sur toutes les plates-formes.

Création d'une instance d'interface

Une nouvelle unité System.Generics.Defaults._MakeInterfaceInstance permet de créer une instance d'interface, représentant toutes les méthodes d'interface par des méthodes anonymes.

TNoRefCountObject

La nouvelle classe System.TNoRefCountObject est une implémentation IInterface sans compteur de références (remplaçant l'ancienne classe bizarrement nommée TSingletonObject).

Optimisations et autres

  • Optimisation de _FinalizeRecord et _FinalizeArray
  • La propriété TDatamodule.OldCreateOrder et TCustomForm.OldCreateOrder existante a été supprimée et sa valeur par défaut est toujours false. Si la propriété est présente dans un fichier de description de fiche, elle est ignorée (mais ne génère pas d'erreur). La propriété existante était utilisée pour la compatibilité avec une logique d'ordre de création antérieure, présente dans d'anciennes versions de Delphi.
  • Amélioration de System.Pos Pascal
  • Optimisation de TArray<T>.BinarySearch
  • Ajout de surcharges de TList<T>.Sort( ..., Index, Count )
  • Ajout de System.IOUtils.TFile.Size
  • Corrections de performance de TObject pour ClassParent et InitInstance
  • Quelques améliorations apportées à System.IOUtils.TPath
  • Prise en charge de la RTL pour un chemin d'accès système supérieur à 260 caractères, si le système d'exploitation le permet (comme sur les versions récentes de Windows)
  • Ajout de la propriété de classe TThread.OnSynchronize
  • Maintenant, les messages EInOutError et EInOutArgumentException incluent le chemin d'accès et comportent un champ Chemin.

Amélioration des performances des éléments suivants :

  • _UInt32ToHexString et _UInt64ToHexString
  • Parse et TryParse pour TSingleHelper et TDoubleHelper

La structure de données TGUID est maintenant définie uniquement dans System.pas

JSON

  • ParseJSONValue() déplacé de TJSONObject vers TJSONValue
  • Ajout d'un TJSONObject.AddPair surchargé pour un entier

Modifications relatives à UTF8ToString

La surcharge UTF8ToString acceptant un tableau d'AnsiChar a été supprimée et UTF8ToString(array of Byte) est devenu obsolète. La fonction supprimée est : UTF8ToString(const S: _PAnsiChr.

Pour trouver une solution de contournement, consultez System.UTF8ToString.

FireDAC

  • Le pilote PostgreSQL prend en charge PostgreSQL jusqu'à la version 13, y compris les procédures stockées PostgreSQL.
  • Prise en charge officielle d'Oracle 19c et des noms de paramètres de 128 caractères pour les procédures stockées Oracle.
  • TFDSortOption a été étendu avec soDigitsAsNumbers et correspond désormais au TCompareOption similaire dans System.SysUtils.
  • Améliorations de l'interface utilisateur du moniteur Firedac.
  • Le pilote Firebird a été amélioré pour rechercher le pilote dans VendorHome et non dans le sous-dossier /bin (ce qui était correct dans les anciennes versions de Firebird)

Bibliothèques clients Internet, HTTP et REST

  • Mécanisme de délai de dépassement pour les composants client EMS et Backend :
  • Les classes TEMSProvider, TKinveyProvider, TParseProvider comportent 2 nouvelles propriétés : ConnectTimeout et ReadTimeout
  • TEMSApi.TConnectionInfo, TParseApi.TConnectionInfo, TKinveyApi.TConnectionInfo : comportent les variables ConnectTimeout et ReadTimeout
  • TDSRestConnection met également à disposition ConnectionTimeOut
  • Ajout de la prise en charge Windows pour HTTP / 2
  • Nouvelle propriété THttpClient.ProtocolVersion
  • Nouvelle propriété TNetHttpClient.ProtocolVersion
  • Nouveau codage TBase64URLEncoding et nouvelle propriété TNetEncoding.Base64URL
  • Basculement de gethostbyname vers getaddrinfo dans l'ensemble de la RTL, pour toutes les plates-formes.
  • Nouveau TCertificate.PublicKey, qui contient un modulo de clé publique
  • ContentType est maintenant de type chaîne et nom de type énumération. Ainsi, vous pouvez utiliser n'importe quelle chaîne de type contenu. Par ailleurs, RestRequest comporte un nouveau CustomContentType.
  • Prise en charge de TLS 1.3 dans TNetHTTPClient pour Windows
  • Plusieurs améliorations apportées à TSocket
  • Un nouveau composant TRESTRequestDataSetAdapter simplifie le chargement des données TDataSet (par ex., TFDMemTable) sur un serveur via JSON. Il s'agit d'un compagnon du composant REST TRESTResponseDataSetAdapter côté serveur.
  • Le composant TRestClient met à disposition la propriété SecureFailureReasons du composant HTTPClient sous-jacent.
  • Dans l'unité Vcl.Styles, FCustomElements et FSource de la classe TCustomStyle sont maintenant déclarés dans la section protégée.

Technologies des serveurs Internet

WebBroker

Les threads ISAPI DLL comportent un StackSize configurable, utilisant la variable Web.Win.ISAPIThreadPool.StackSize. La performance de WebBroker a considérablement été améliorée lors de l'envoi/la diffusion de fichiers supérieurs à 2 Go (MaxInt).

RAD Server

Prise en charge de multipart/form-data pour RAD Server

DataSnap

DataSnap : l'URI REST est maintenant configurable en utilisant un nouveau mécanisme, basé sur un événement TDSMethodMapEvent

Modifications relatives à l'installateur

Plusieurs modifications importantes ont été apportées à l'installateur de RAD Studio 11.0 :

  • L'installateur minimal a été mis à jour pour s'afficher correctement sur les écrans haute résolution (High DPI). Les boutons radio et les cases à cocher sont maintenant correctement visibles.
  • L'installateur minimal offre une option de sélection de la langue, au lieu de s'appuyer sur la détection du système d'exploitation comme c'était le cas auparavant. L'expérience est ainsi plus fluide pour les utilisateurs des versions allemande, française ou japonaise de Windows souhaitant installer la version anglaise de RAD Studio.
  • Le nouveau dossier Référentiel de catalogues dédié aux fichiers d'installation vous permet de conserver les grands fichiers d'installation dans un emplacement personnalisé, autre que le dossier des documents publics :
  • L'installation est maintenant plus rapide. Les fonctionnalités complexes sont téléchargées via le téléchargement de plusieurs fichiers en parallèle plutôt qu'en séquence. Le téléchargement et l'extraction des fichiers compressés s'effectuent également en parallèle, tandis que l'installation des fonctionnalités se fait en séquence. Les informations affichées pendant l'installation ont été modifiées en fonction, et les "noms des fonctionnalités" visibles dans la version 10.4.x ont été supprimés et remplacés par le numéro du fichier de téléchargement de chaque fonctionnalité.


Voir aussi