SlideShare une entreprise Scribd logo
Patrick Prémartin (MVP Delphi – Orléans)
Patrick.premartin@olfsoft.com
https://developpeur-pascal.fr
Laurent Navarro (MVP C++ Builder & Delphi – Toulouse)
ln@altidev.com
http://www.altidev.com
Grégory Bersegeay (MVP Delphi – Niort )
gregory.bersegeay@gbesoft.fr
http://www.gbesoft.fr
Introduction
RAD Studio propose de puissants contrôles VCL pour Windows 10 et permet le
développement multiplateforme pour Windows, Mac, Linux, iOS and Android avec
FireMonkey (FMX).
Développement visuel rapide
RAD Studio est l’environnement de développement ultime avec les fonctionnalités C++
et Delphi que les développeurs aiment : design, code, debug et test pour le
déploiement multiplateforme avec des performances natives.
Qu’est-ce que RAD Studio ?
Prêt pour le cloud
indépendant de la
plateforme.MULTI
PLATEFORME
natif
Les OS supportés par RAD Studio 10.4
Linux 64-bit
Ubuntu & Red Hat
Enterprise
(Delphi seulement)
macOS Catalina
(Delphi seulement)
iOS 13Android 10
(64-bit pour Delphi
seulement)
● C’est la plateforme la plus
importante pour les
clients actuels.
● Ajoutez des
fonctionnalités Windows
10 sans casser la
compatibilité avec
Windows 7.
● Windows 7 n’est plus
supporté par Microsoft
depuis janvier 2020.
Windows 10 est le roi
Le multi plateforme est l’avenir
La plupart des projets commencent en desktop
Faire des apps
dédiées plutôt que
copier le desktop
Plus de solutions pour
accéder au desktop
depuis un butineur.
Les licences
Les licences
• Dans la version 10.4 Sydney :
• Delphi permet de faire du développement en Pascal pour Windows, macOS,
Linux, iOS et Android.
• C++Builder permet de faire du développement en C++ pour Windows et
Android .
• RAD Studio est un bundle formé de Delphi et C++Builder.
Les licences
• Une licence 10.4 donne aussi accès aux versions précédentes de
Delphi, C++Builder et RAD Studio pour cibler des plateformes
techniques obsolètes comme de vieilles versions d’Android ou
macOS/iOS en 32 bits.
• Pour le détail des fonctionnalités rendez-vous sur
https://www.embarcadero.com/docs/rad-studio-feature-matrix.pdf
Les licences
• Il existe plusieurs types de licences : Named User, Network Named
User et Network Concurrent User.
• Il existe plusieurs niveaux de licences : Academic, Community Edition,
Professional, Enterprise, Architect et Trial.
• Renseignez-vous auprès Barnsten, distributeur pour la France, la
Suisse, le BENELUX et toutes les pays francophones.
https://www.barnsten.com/fr/
« Named User»
• Les licences nommées sont les plus classiques : elles sont attachées à
un compte développeur EDN.
• Chaque développeur a sa licence et l’utilise sur son ou ses ordinateurs
selon le produit concerné.
• Personne d’autre que le propriétaire de la licence n’est autorisé à
utiliser son logiciel de développement.
Elles ne sont pas transmissibles.
« Network Named Users»
• Les licences nommées sont enregistrées auprès d’Embarcadero. Les
licences nommées en réseau sont gérées chez vous.
• Si vous avez des développeurs occasionnels qui peuvent utiliser les
postes de travail de vos développeurs habituels, c’est le type de
licence qu’il vous faut.
• Vous pouvez en effet changer leur propriétaire quand vous voulez,
directement chez vous, et être toujours en règle.
« Network Concurrent User
Licences »
• Si vous avez des développeurs occasionnels vous pouvez aussi
prendre un pool de licences.
• Ces licences fonctionnent à l’utilisation : quand les utilisateurs en ont
besoin ils prennent un ticket disponible (valide 30 jours si pas de
connexion à votre réseau) et le libère lorsqu’ils ont terminé de
travailler.
Les types de licence
• Pour en savoir plus sur les types de licences vous pouvez consulter
cette explication :
https://code-partners.com/network-licensing-in-rad-studio/
• Bien entendu vous pouvez contacter votre distributeur et lui
expliquer vos besoins pour avoir une proposition adaptée à vos
usages.
Edition « Academic »
• La licence Academic a une durée de validité de 1 an.
• Elle est destiné aux établissements scolaires (tous niveaux), aux
enseignants et aux étudiants.
• Elle a les mêmes fonctionnalités qu’une édition Enterprise.
• Elle doit être utilisée à des fins d’apprentissage. Toute utilisation
commerciale est interdite.
Edition « Community Edition »
• La licence Community Edition est valide 1 an. Elle est gratuite.
• Pas d’accès aux mises à jour. A renouveler annuellement si l’utilisateur
se conforme toujours aux règles d’utilisation.
• Les fonctionnalités sont les mêmes que l’édition Professional.
• Destinée à un usage personnel, son usage commercial est limité.
Edition « Community Edition »
• La Community Edition n’est pas disponible en version 10.4 pour le
moment.
• C’est toujours la 10.3.3 pour les nouvelles demandes.
La 10.4 arrivera plus tard.
• Embarcadero a décidé de privilégier les clients sous licences payantes
afin de limiter les problèmes de téléchargement et les trop nombreux
abus constatés depuis 2 ans sur la CE.
Edition « Professional »
• La licence Professional n’a pas de limite de validité.
• Elle intègre les mises à jour durant un an.
Possibilité de continuer la souscription avec un tarif très avantageux.
• Permet de faire tous types de développements. Pas de bases de
données d’entreprise ni fonctionnalités client-serveur.
• Pas de restriction d’usage.
Edition « Enterprise »
• La licence Enterprise n’a pas de limite de validité.
• Elle intègre les mises à jour durant un an.
Possibilité de continuer la souscription avec un tarif très avantageux.
• Intègre les fonctionnalités de l’édition Professional, DataSnap,
FireDAC complet (incluant des bases client-serveur) et RAD Server.
• Pas de restriction d’usage.
Edition « Enterprise »
• Compilateur Linux et FMX Linux inclus pour Delphi.
• Licence de déploiement IBToGo (Interbase embed) incluse.
• Une licence de déploiement mono site pour RAD Serveur incluse.
• Pack de drivers CData Entreprise Connector pour FireDAC inclus
(licence de 1 an).
Edition « Architect »
• La licence Architect n’a pas de limite de validité.
• Elle intègre les mises à jour durant un an.
Possibilité de continuer la souscription avec un tarif très avantageux.
• Intègre les fonctionnalités de l’édition Enterprise.
• Pas de restriction d’usage.
Edition « Architect »
• Licences logicielles fournies :
• Sencha ExtJS Professional Edition
• Aqua Data Studio
• Ranorex
• Une licence de déploiement multi site de RAD Serveur est incluse.
Edition « Trial »
• La licence est valable 30 jours.
• Elle correspond à une version RAD Studio Architect (sans les logiciels
tiers).
• Sa licence n’autorise qu’une utilisation à des fins d’évaluation. Aucun
développement ne doit être fait (et encore moins distribué) avec
cette licence.
Ai-je droit à la 10.4 ?
• Selon l’ancienneté et le type de licence achetée il est possible que
vous puissiez tout simplement télécharger l’installeur depuis le
nouveau portail client : https://my.embarcadero.com
• Si votre licence est trop ancienne ou pas au niveau qui vous intéresse,
contactez votre distributeur : une mise à niveau est toujours possible.
Installation
Installation
• Il y a désormais le même programme d’installation que l’on soit
online ou offline. Il passe par GetIt dans les deux cas.
• L’ISO a été remplacé par deux fichiers (exe + gof). On peut les mettre
sur clé USB ou n’importe quel support et lancer l’installation offline à
partir de là.
Installation
• Les modifications de compilateurs et d’options installés sont
maintenant possibles pour les installations offline depuis l’IDE.
Installation
• Il n’y a plus de distinction entre 32 et 64 bits sur les options liées aux
compilateurs. Les compilateurs permettant un déploiement sont les
seuls proposés.
• Ca simplifie l’expérience d’installation et permet d’aller à l’essentiel.
Installation
• Pour les utilisateurs désireux d’avoir les compilateurs « obsolètes » ou
cibler des plateformes qui ne le sont plus peuvent installer les
versions précédentes avec leurs patchs.
• La liste des plateformes ciblées est disponible sur la documentation
en ligne à l’adresse
http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page
Installation
• Patchs 10.3.3 Rio : https://developpeur-pascal.fr/p/___00c-les-
patchs-a-installer-sur-la-version-rio-1033-de-delphi-c-builder-et-rad-
studio.html
• Patchs 10.2.3 Tokyo : https://developpeur-pascal.fr/p/___004-les-
patchs-a-installer-sur-la-version-tokyo-1023-de-delphi-c-builder-et-
rad-studio.html
GetIt
GetIt
• Grâce au nouveau système d’installation, Embarcadero va propulser
les correctifs (patchs / hotfix) sous forme de paquets GetIt.
• Leur installation sera simplifiée par rapport aux versions précédentes.
• Personne ne pourra passer à côté car l’IDE nous informe de la
présence de patchs dès l’écran d’accueil et une rubrique leur est
dédiée sur le catalogue GetIt.
GetIt
• GetIt permet de désinstaller les paquets installés.
• Les temps de réponse lors de l’affichage du catalogue de paquets et
du passage d’une rubrique à une autre ont été améliorés.
GetIt
• GetIt détecte les paquets installés à mettre à jour. Nous pouvons ainsi
rester à niveau par rapport à notre installation.
• Il suffit d’activer l’option « rechercher automatiquement les mises à
jour GetIt » depuis « Outils / Options / IDE / Gestionnaire de packages
GetIt ».
• De plus les paquets installés à mettre à jour ont leur rubrique dans le
catalogue GetIt, même sans activer cette option.
GetIt
• Pour bénéficier de GetIt si vous avez fait l’installation en ISO, vous
devez saisir cette commande depuis le dossier d’installation de RAD
Studio :
GetItCmd.exe -c=useonline
• Sans cela le catalogue de GetIt s’affichera mais il ne pourra pas faire
d’installation de son contenu.
IDE
IDE
• Modifications des thèmes clair / sombre pour améliorer la prise en
charge des moniteurs High DPI / 4K
• Activation automatique (sur demande) du bon thème en fonction de
celui de Windows
• Amélioration du système de barre de titre
IDE
• Accélération de l’affichage des options d’environnement.
• Accélération de l’affichage des options de projet et modification de
certains écrans de paramétrage (notamment liés à LSP).
IDE
• Amélioration de l’IDE insight (recherche dans l’intégralité des textes
de l’IDE depuis sa barre de titre)
• Modification sur les recherches notamment pour l’option « find in
files » dont l’affichage des résultats a été améliorée.
IDE
• Modifications sur l’éditeur de code :
• choix du langage pour la mise en couleurs du texte,
• choix de l’encodage du fichier,
• modification de la taille des textes
IDE
• Suppression de l’historique du presse papier dans l’inspecteur
d’objets
Page d’accueil
• L’accueil de l’IDE a été revu.
• On y trouve toujours les accès pour la création de projets et
l’ouverture de projets (favoris ou les derniers ouverts).
• Le flux des dernières vidéos publiées sur la chaîne YouTube
d’Embarcadero permet de ne rien louper (pour les anglophones).
Delphi
Compilateurs
• Delphi 10.4 Sydney possède les compilateurs suivants :
• Android en 32 et 64 bits pour processeurs ARM
• Linux en 64 bits pour processeur Intel (éditions Entreprise, Architect, Trial et Academic)
• macOS en 64 bits pour processeurs Intel
• iOS en 64 bits pour processeurs ARM
• Windows en 32 et 64 bits pour processeurs Intel
• Les compilateurs iOS et macOS en 32 bits ont été retirés car Apple ne
permet plus de diffuser de logiciels compilés en 32 bits.
Révolution dans l’éditeur de code
• Implémentation de LSP (Language Server Protocol) dans l’éditeur de
code.
• Code Insight est désormais traité par un autre processus.
• Error Insight est également amélioré et ça se sent à la saisie.
• Les temps de réponse dans l’IDE sont nettement améliorés sur les
gros projets.
Révolution dans l’éditeur de code
• Plus de possibilités de recherches notamment sur la complétion de
code.
• Il n’y a plus de différence entre le mode normal et le mode débogage
dans l’éditeur de code !
• Efficace même sur des projets de plusieurs millions de lignes de code.
Révolution dans l’éditeur de code
• Il est possible de désactiver LSP si on préfère le fonctionnement
historique de l’assistance en cours de saisie. Ca se fait depuis « Outils
/ Options / Interface utilisateur / Options de l’éditeur / Options du
source ».
• Il est aussi possible d’utiliser un autre serveur LSP (selon sa
compatibilité) pour Delphi ou pour l’un des autres langages pris en
charge par l’éditeur. Référencez simplement votre serveur LSP dans le
même écran des options de l’EDI.
Chaînes de caractères
Chaînes de caractères
• Jusqu’à présent les chaînes de caractères pouvaient être « 1-based »
ou « 0-based » selon la plateforme et la configuration de l’EDI ou de
chaque projet.
• Cela a pu rester très flou pour les développeurs venant de la VCL et
d’une façon générale pour tout le monde, ne sachant pas trop sur
quoi on travaille si on ne fait pas attention.
Chaînes de caractères
• A partir de Delphi 10.4 Sydney les choses changent et seront plus
claires.
• Il n’y a plus de distinction entre plateformes LLVM et les autres : la
directive de compilation ZEROBASEDSTRING est désactivé par défaut
sur toutes les plateformes.
Chaînes de caractères
• Les chaînes utilisées comme tableau ou avec les anciennes fonctions
ou procédures de la RTL sont toutes des « 1-based string».
• Le premier caractère est à l’indice 1 de la chaîne. Le dernier caractère
est à l’indice N, N étant la longueur de la chaîne.
• Attention : si vous compilez votre projet sur une version antérieure et
n’avez pas forcé le ZEROBASEDSTRING dans l’IDE ou votre projet vous
retrouvez l’ancien fonctionnement !
Chaînes de caractères
• Les chaînes manipulées par les méthodes de TStringHelper sont
toutes traitées comme des « 0-based string».
• Le premier caractère est à l’indice 0 de la chaîne. Le dernier caractère
est à l’indice N-1, N étant la longueur de la chaîne.
• C’était déjà le cas pour toutes les plateformes avant ce changement.
Chaînes de caractères
• Embarcadero recommande l’utilisation des Helpers sur les chaînes
pour lever toute ambiguïté quelle que soit la version de Delphi et le
type de chaîne sur lequel on travaille.
• Les helpers utilisent des « 0-based string » même si la chaîne ne l’est
pas. Ils font la conversion d’indice pour nous.
Chaînes de caractères
• Lors de votre passage d’un projet multiplateforme antérieur à Delphi
10.4 Sydney soyez très attentifs à la façon dont vous gériez les chaînes
sur les plateformes mobiles et les plateformes desktop.
• Si vous ne vérifiez pas votre code vous risquez des anomalies après
recompilation.
• Activer ZEROBASEDSTRING sur les plateformes mobiles pour éviter
ces anomalies en attendant votre révision du code.
X
Custom Managed Record :
Rappel sur les record
• Les record sont des structures (agrégation de variables) qui peuvent
contenir des méthodes.
• On peut aussi les présenter comme des classes par valeur,
• Ils n'ont pas besoin d'être alloués dynamiquement (et donc libérés).
• TPoint & TRect sont des record pas des class
• record et class partagent beaucoup de concepts.
• La principale limite des record est qu'il n'y a pas d'héritage.
• record est managé s'il contient un type managé (string, interface, …)
Custom Managed Record
• Les custom managed record s'approchent un peu du concept de
classe de C++ en apportant :
• Code invoqué implicitement lors de l'initialisation
class operator TMyRecord.Initialize (out Dest: TMyRecord);
• Code invoqué implicitement lors de la destruction
class operator TMyRecord.Finalize(var Dest: TMyRecord);
• Possibilité de redéfinir la gestion de l'assignation
class operator TMyRecord.Assign (var Dest: TMyRecord
;const [ref] Src: TMyRecord);
• Les constructeurs sont toujours possibles, mais ils sont invoqués après
l'initialisation.
Custom Managed Record
• Le code Initialize est invoqué lors de la création du record c’est-
à-dire dans les cas suivants :
• Déclaration var, inline var, tableau statique
• SetLength pour les tableaux dynamiques
• Appel fonction avec paramètre par valeur ou valeur de retour
• Le code Finalize est invoqué lors de la destruction du record c’est-
à-dire dans les cas suivants :
• Fin de la fonction pour les variables déclarées dans la section var et les
paramètres passés par valeur.
• Fin du scope begin/end pour les variables inline
• Invoqué quelque soit le chemin de retour (y compris suite à une exception)
comme une section try/finally
Custom Managed Record
• Code exécuté lors de la création d'un record
• Initialize généré par le compilateur comme jusqu'à présent
• Code Initialize personnalisé
• Constructeur si create invoqué
• Code exécuté lors de la suppression d'un record
• Code Finalize personnalisé
• Finalize généré par le compilateur comme jusqu'à présent
• Vous pouvez ne définir qu'une seule des 2 méthodes.
Custom Managed Record
• Le code Assign est invoqué dans les cas suivants :
• Assignation avec l'opérateur :=
• Passage de paramètres par valeur,
généralement pas s'ils sont const, const [ref] recommandé
• Affectation des valeurs de retour
• N'est pas appelé si déclaration avec affectation depuis le constructeur
• var v3:TMyRecord:=TMyRecord.create('Valeur de V3');
• Cet opérateur est appelé à la place de l'opérateur par défaut, il doit
donc gérer complètement l'affectation.
TMyRecord.Initialize
TMyRecord.Initialize
TMyRecord.Assign Contenu de v1 dans Valeur par defaut
v1=Contenu de v1 modifié
v2=Contenu de v1
--------------------------------------------
TMyRecord.Initialize
TMyRecord.Create Valeur de V3
v3=Valeur de V3
--------------------------------------------
TMyRecord.Initialize
TMyRecord.Initialize
TMyRecord.Create Valeur de V4
TMyRecord.Assign Valeur de V4 dans Valeur par defaut
TMyRecord.Finalize de Valeur de V4
v4=Valeur de V4
--------------------------------------------
TMyRecord.Finalize de Valeur de V4
TMyRecord.Finalize de Valeur de V3
TMyRecord.Finalize de Contenu de v1
TMyRecord.Finalize de Contenu de v1 modifié
Custom Managed Record :
Pourquoi faire ?
• Les custom managed record sont les fondations de futurs mécanismes.
• Des exemples intéressants inspirés du monde C++ pourraient être :
• Les pointeurs intelligents
• Le mécanisme de gardien entre autres utilisé pour la libération automatique
des verrous
• Gestion Nullable
https://dalijap.blogspot.com/2020/05/delphi-nullable-with-custom-managed.html
• Limitation : Pour l'instant, l'intégration avec C++ Builder n'est pas
opérationnelle dans le .hpp
Custom Managed Record : Smart TStringList
SL1=Ligne 1
Ligne 2
Ligne 3
SL2=Ligne 1
Ligne 2
C++Builder
Nouveau Debugger Win64
• Nouvelle génération de debugger basé sur LLDB bien plus complet
• Permet de meilleures évaluations
• Supporte les types standard de la STL C++ :
std::string, wstring, vector, map, shared_ptr, …
• Extensible par des scripts python
Nouvelles librairies
• Disponibles depuis GetIt
• Boost 1.70 04/2019
Autres nouveautés C++Builder
• FreeAndNil est à présent type-safe, il y a à présent 2 implémentations
• void FreeAndNil(T** obj)
• void FreeAndNil(T* &obj) (Nouveau)
• Format existe désormais en version variadic template
str=Format("char*=%s , wchar*=%s , us=%s int=%d"
,ARRAYOFCONST(("test",L"WTEST",Label1->Caption,15)) );
• Peut à présent s'écrire :
str=Format("char*=%s , wchar*=%s , us=%s int=%d"
,String("test"),L"WTEST",Label1->Caption,15);
• char* requiert un transtypage en String/UnicodeString
Autres nouveautés C++Builder
• Améliorations générale des compilateurs et de la RTL
• Intégrations d’améliorations de la STL provenant de Dinkumware
• Amélioration de la compatibilité avec de nombreuses libraires C++
standards par l'ajout de fonctions manquantes dans la RTL.
• Améliorations de Cmake
Runtime Library (RTL)
FireDAC
• Mise à jour des drivers :
• FireBird
• PostgreSQL
• SQLite
• La liste des bases de données et drivers supportés est sur
http://docwiki.embarcadero.com/RADStudio/Sydney/en/Databases_(
FireDAC)
FireDAC - SQLite
• Possibilité de changer le mode de chargement de la librairie SQLite.
• Le mode statique fait un lien avec les librairies fournies par
Embarcadero.
• Le mode dynamique permet de prendre la librairie que l’on désire (à
partir de la version 3.7.7.1).
• Plus d’infos sur
http://docwiki.embarcadero.com/RADStudio/Sydney/en/Connect_to
_SQLite_database_(FireDAC)
Live Bindings
• Optimisations et modifications de l’architecture de Live Bindings
entrainant des améliorations de temps de réponse dans le concepteur
et à l’utilisation.
• Prise en compte des informations d’affichage provenant des champs
d’un ensemble de données à travers Live Bindings.
• Améliorations au niveau de l’expert, notamment sur la saisie des
formatages.
Internet
• Mise à niveau des composants HTTP et REST avec les nouveautés liées
à https.
• Possibilité d’annuler/interrompre des requêtes REST asynchrones.
• TLS 1.3 supporté par TNetHTTPClient
Internet
• TAmazonRegion est désormais un champ de saisie plutôt qu’une liste
pour permettre d’accéder à toutes les régions AWS sans restriction
• Mise à niveau de la librairie Indy installée par défaut
Internet (SOAP)
• Possibilité de fixer un certificat commun aux clients SOAP HTTP
(TStreamLoader).
• Nouvelles propriétés SendTimeout et UseDefaultCredentials sur
THTTPReqResp.
• Nouveaux événements sur THTTPReqResp : onPostingData et
onHttpError.
Librairie JSON
• Jusqu’à 50% d’amélioration des performances sur le composant
TJSONReader
• Accès à un élément de TJSONArray directement, sans devoir passer
par sa propriété Items[].
Parallel Programing Library (PPL)
• Optimisations et améliorations de la stabilité de la librairie.
• Ajout d’un timer sur ForceQueue pour différer l’exécution du code
mis en file d’attente sans avoir à faire un nouveau thread.
• Améliorations sur la prise en charge des exceptions.
• Optimisations sur WaitForAll et WaitFor sur les tâches.
AppTethering
• Possibilité de fixer les timeouts.
• Possibilité pour une ressource de savoir quand la communication est
terminée.
• Optimisations diverses et amélioration de la qualité.
Autres modifications sur la RTL
• Grosse amélioration des performances sur les RTTI (impactant la
performance globale des applications)
• Ajout de WriteInt64 et ReadInt64 sur TCustomIniFile
• Ajout de isEmpty sur TGUID
• Modification du buffer par défaut sur le CopyFrom des TStream (1Mb
au lieu de 60Ko)
• Amélioration de la performance du QuickSort de System.Classes
Autres modifications sur la RTL
• Ajout de fonctions permettant de compter des bits (à 1 ou 0) dans
des nombres de différentes tailles.(CountLeadingZerosXX,
CountTrailingZerosXX, CountPopulationXX avec XX = 32 ou 64).
• L’assignation d’une TStringList à une autre a été optimisé.
• Des dépendances plus nécessaires ont été retirées pour permettre à
des applications consoles de tourner sans problème sur Windows
Server Core.
Comparaisons de chaînes
Comparaisons de chaînes
• La méthode GetHashCode qui fait partie de TStringHelper était
utilisée pour des comparaisons de chaînes et le hashage de celles-ci.
• Jusqu’à Delphi 10.4 Sydney le texte hashé était préalablement mis en
majuscules. Ce n’est plus le cas.
• Impact possible sur des mots de passes ou d’autres textes que vous
auriez stockés en version hashée par cette méthode.
Comparaisons de chaînes
• Si vous avez stocké un hash et devez le comparer à un nouveau hash,
pensez à mettre la chaîne à comparer en majuscules avant de la
hasher.
• Idéalement, si vous en avez la possibilité, recalculez les hashs de tous
les textes que vous auriez stockés dans ce format.
FreeAndNil change en 10.4 Sydney
FreeAndNil change en 10.4 Sydney
• La déclaration de FreeAndNil change à partir de Delphi 10.4 Sydney.
• Normalement cela ne devrait pas avoir d’impact sur vos codes
sources, mais si vous l’utilisiez sur des variables non objets (interfaces
par exemple), vous aurez des erreurs de compilation et devrez
corriger votre code.
Correction typographique
Correction typographique
• La méthode THTTPClient.CreateFormFromStrings était mal
orthographiée dans sa déclaration.
• Son nom a été corrigé.
• Si vous l’utilisiez dans vos programmes il vous suffira de corriger la
faute de frappe originelle qui sera signalée lors de la compilation de
vos projets.
Visual Component Library (VCL)
Styles VCL
• La VCL continue à évoluer pour nous donner plus de liberté et
d’efficacité dans la prise en charge d’écrans High DPI et 4K.
• Le format des styles VCL a été modifié afin de permettre l’utilisation
de plusieurs formats d’images dans le concepteur de styles bitmap
sur le même principe que pour les styles FMX.
• Des styles existants et de nouveaux styles High-DPI sont disponibles
sur GetIt et installés avec l’IDE.
Styles VCL
• Autre grosse nouveauté au niveau des styles VCL : on peut désormais
les utiliser directement sur les composants visuels.
• Les composants visuels ont une nouvelle propriété « StyleName » qui
prend le style qui doit leur être appliqué.
• Vide, c’est le style de la fiche ou du projet.
• Avec un nom, c’est le style ayant ce nom (s’il est référencé dans le
projet).
Images High DPI / 4K
• La version 10.3 Rio a ajouté les composants TImageCollection pour
stocker des images dans différents formats et TVirtualImageList pour
y accéder depuis nos fiches.
• La version 10.4 Sydney ajoute le composant TVirtualImage pour
afficher une image multi résolutions sur nos fiches, prise dans une
collection d’images.
Images High DPI / 4K
• Dans les collections d’images on peut aussi se référer aux images par
leur nom plutôt que leur index dans la collection.
• Une propriété ImageName a fait l’apparition sur les composants
utilisant les listes d’images. Elle permet de ne plus dépendre de
l’index des images (au cas où il changerait).
Images High DPI / 4K
• Modification du TSpeedButton pour permettre d’utiliser une image
depuis une liste.
• Modification dans TScaledGraphicDrawer.
On peut référencer notre propre algorithme en le surchargeant.
• Amélioration de l’affichage des images embarquées dans des
composants standards (TDBImage, MediaPlayer, DBGrid,
TDBNavigator, Bitmap, …)
X
Navigateur web
• Le nouveau composant TEdgeBrowser permet d’utiliser Microsoft
Edge dans sa version Chromium. Ce composant remplace le
TWebBrowser qui s’appuyait sur Internet Explorer.
• Il permet ainsi de bénéficier d’un moteur de rendu Web plus
performant, plus respectueux des standards et maintenu.
• Le TWebBrowser perdure et dispose de deux nouvelles propriétés :
SelectEngine (permet d’activer le moteur Edge ou Internet Explorer)
et ActiveEngine (permet de savoir quel moteur est utilisé).
Navigateur web
• Le navigateur Edge basé sur Chromium ne fait pas partie intégrante de Windows.
Pour utiliser le composant, des pré-requis sont nécessaires :
o disposer du navigateur Edge basé sur Chromium (version 82.0.430.0 minimum). Il est
téléchargeable depuis le site de Microsoft :
https://www.microsoftedgeinsider.com/fr-fr/download
o le composant s’appuie sur le contrôle WebView2 de Microsoft.
Veillez à bien sélectionner la
version du Canal Canary
Navigateur web
Microsoft fournit WebView2 sous forme de 2 dll (une 32 bits et l’autre 64 bits) qui ont le même
nom WebView2Loader.dll.
Il est disponible évidemment sur le gestionnaire de package de Microsoft (NuGet) à l’adresse :
https://www.nuget.org/packages/Microsoft.Web.WebView2
Il est également disponible via GetIt (en recherchant par exemple WebView2).
Les dll seront installées dans le répertoire Documents de
l’utilisateur sous:
..EmbarcaderoStudio21.0CatalogRepositoryEdgeView2SDK-
0.9.488Bin
Navigateur web
Enfin, il vous faudra recopier la dll adéquate (32 ou 64 bits) dans le répertoire de votre
exécutable. Elle sera à déployer avec votre application.
Navigateur web
• L’utilisation du TEdgeBrowser est très similaire à celle du TWebBrowser. Les
principales méthodes et événements se retrouvent avec les mêmes noms
(navigate, goBack, goForward, refresh...). Cela facilite la migration
TWebBrowser vers TEdgeBrowser.
• Toutefois, tout ne pouvait pas être repris tel quel. De plus Edge Chromium est
récent et n’est pas installé sur la majorité des postes Windows. C’est pour cela
que le TWebBrowser a évolué avec l’ajout de deux nouvelles propriétés.
SelectEngine permet donc de spécifier le moteur de rendu. Il est possible de
spécifier Edge (le TWebBrowser se comporte alors comme le TEdgeBrowser et
nécessite les mêmes pré-requis), Internet Explorer (le TWebBrowser conserve
son comportement d’origine), Edge si disponible.
Navigateur web
• Bien évidemment, une nouvelle application exemple est fournie montrant les
fonctionnalités du TEdgeBrowser. De même, la démonstration d’utilisation du
TWebBrowser a été mise à jour.
Barre de titre personnalisable
• Le nouveau composant TTitleBarPanel permet de moderniser
l’interface de votre application en plaçant ce que vous souhaitez dans
sa barre de titre.
• Pour se faire, le TForm se dote également d’une propriété
CustomTitleBar qui va permettre de modifier les propriétés standards
de la barre de titre mais également de lui associer un TTitleBarPanel.
Barre de titre personnalisable
• Le TTitleBarPanel est un composant visuel que l’on place sur le TForm.
• Il peut être considéré comme un TPanel classique. On peut y déposer
n’importe quel composant graphique, autant que nécessaire et les disposer
selon ses désirs. Il devient possible d’ajouter des boutons, une zone de
recherche…
• Pour activer cette barre de titre personnalisée, il suffit d’associer le
TTitleBarPanel à la propriété Control de CustomTitleBar et de mettre à
true la proriété Enabled de CustomTitleBar.
Barre de titre personnalisable
• Il est possible d’ajouter des boutons personnalisables aux côtés des
boutons systèmes. Attention dans ce cas, le dessin d’une image sur un
tel bouton doit se faire via les méthodes de dessin de GDI+.
• Une nouvelle application exemple est fournie montrant les
possibilités offertes par le TTitleBarPanel.
Autres modifications sur la VCL
• De nombreux correctifs et des mises à jour sur l’intégration des API
Windows.
• Ajout d’un onLoadPicture et DoLoadPicture sur TDBImage qui sont
déclenchés lors d’un chargement d’image par le composant.
FireMonkey
Modifications sur macOS : Metal
• Apple a annoncé en juin 2019 qu’ils ne fourniraient plus OpenGL sur
leurs OS. Les développeurs sont invités à utiliser Metal dès que
possible.
• Embarcadero ajoute le support de la librairie Metal sur macOS et iOS
à partir de Delphi 10.4 Sydney pour remplacer Quartz API & OpenGL.
• Son activation n’est pas automatique. C’est aux développeurs de la
demander dans leurs projets.
Modifications sur macOS : Metal
• Si vous voulez activer Metal sur vos projets FMX mettez simplement
GlobalUseMetal à True avant d’afficher quoi que ce soit (idéalement
dans le bloc d‘initialisation d’une unité de configuration utilisée par
votre projet.
• Cette variable globale n’est prise en charge que sur iOS et macOS
lorsque Metal est présent.
Modifications sur macOS : Metal
• Si vous utilisez Metal dans vos projets vous pourrez aussi changer ces
deux paramètres :
• GlobalEventDrivenDisplayUpdates
http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Types.
GlobalEventDrivenDisplayUpdates
• GlobalPreferredFramesPerSecond
http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Types.
GlobalPreferredFramesPerSecond
Autre modification sur macOS
• Modification du TMediaPlayer sous macOS (AVFoundation)
Modifications sur iOS
• La librairie Metal fait aussi son apparition sur FireMonkey pour iOS.
• A partir de juillet il faudra utiliser un « launch screen » sous le format
« storyboard » pour soumettre des programmes à l’App Store d’Apple.
Delphi 10.4 Sydney permet de générer ces fichiers depuis les options
de projet.
• Modification du TWebBrowser sous iOS (WKWebView API)
Modifications sur iOS
• On peut connaître le thème (sombre/clair) actuel de l’OS et on est
notifié s’il change.
• Le thème par défaut pour iOS avait déjà une version claire et une
version sombre depuis Delphi 10.3.3 Rio.
• On peut maintenant le gérer plus simplement pour nos propres
thèmes.
Modifications sur Android
• Utilisation de AdoptOpenJDK au lieu du JDK d’Oracle.
• Les projets sont maintenant compilés pour l’API 29 au minimum.
• Amélioration du support de l’app bundle permettant de diffuser des
projets en 32 et 64 bits dans un même fichier APK.
Modifications sur Android
• Nouvelle méthode TAndroidHelper.ShouldNativeLibrariesBeExtracted
• Des améliorations de qualités et correctifs sur de nombreux domaines
dont les senseurs, l’affichage en général et le TMemo.
Modifications sur Windows
• Nouvelle implémentation du TMemo pour mieux gérer IME (pour les
langues internationales étendues) lors de la saisie et de l’affichage.
• Pour activer la nouvelle implémentation du TMemo vous devez
utiliser l’unité FMX.Memo.Style.New quelque part dans votre projet
(une fois suffit).
• Modification de l’intégration de DirectX pour améliorer le support des
APPX pour Microsoft Store.
Modifications sur Linux
• Amélioration de l’intégration de FMX Linux.
• Ajout de la plateforme Linux par défaut en création de projet FMX,
comme pour les autres plateformes disponibles.
• Possibilité d’utiliser le concepteur de fiches et ajouter des
composants même en ayant le compilateur Linux activé.
Autres modifications sur FMX
• Nouveau composant TBufferedLayout pour gérer un affichage
bufferisé des écrans FMX.
• Hint, ShowHint et ParentShowHint ajoutés au composant TToolBar.
• Amélioration du support des séquences ZWJ d’emoji dans les champs
de saisie.
• Amélioration des performances sur l’affichage des textes dans les
TextLayout
Modèle de mémoire unifié
Modèle de mémoire unifié
• A partir de la 10.4 Sydney on dit au revoir à l’automatic reference
counting (ARC) sur les objets.
• Le modèle mémoire est le même pour toutes les plateformes.
• Nous devons supprimer les objets que nous avons créés et donc
recommencer à utiliser la méthode Free ou la procédure FreeAndNil()
y compris pour les codes destinés à Android et iOS.
Modèle de mémoire unifié
• La directive AUTOREFCOUNT est supprimée.
• La directive NEXTGEN est supprimée.
• La méthode DisposeOf qui permettait de forcer la suppression
d’objets sans attendre le garbage collector appelle désormais Free
pour toutes les plateformes.
Modèle de mémoire unifié
• Certains types « anciens » sont maintenant utilisables sur Android et
iOS avec la désactivation de NEXTGEN.
• C’est par exemple le cas de ANSIString (mais attention : les codes
pages de Windows ne sont pas pris en charge).
Modèle de mémoire unifié
• ReportMemoryLeaksOnShutdown fournit par le gestionnaire de
mémoire FastMM4 reste utilisé uniquement sous Windows.
• Pour pister les fuites mémoires éventuelles en multiplateforme vous
pouvez utiliser la librairie Delphi-LeakCheck :
https://bitbucket.org/shadow_cs/delphi-leakcheck
• Un exemple d’utilisation est disponible sur
https://medium.com/@Zawuza/delphi-leakcheck-2242270ef42d
Questions / réponses
Patrick Prémartin (MVP Delphi – Orléans)
Patrick.premartin@olfsoft.com
https://developpeur-pascal.fr
Laurent Navarro (MVP C++ Builder & Delphi – Toulouse)
ln@altidev.com
http://www.altidev.com
Grégory Bersegeay (MVP Delphi – Niort )
gregory.bersegeay@gbesoft.fr
http://www.gbesoft.fr

Contenu connexe

Tendances

Utiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagesUtiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'images
pprem
 
What’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. FornaciariWhat’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. Fornaciari
Zenika
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
Zenika
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
Frédéric Sagez
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
Stéphane Traumat
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
Claude Falguiere
 
Cs4 design premium — winne
Cs4 design premium — winneCs4 design premium — winne
Cs4 design premium — winneedwinremache
 
Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012
Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012
Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012
Access42
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
Emmanuel Hugonnet
 
Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesSOAT
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
Arnaud Héritier
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation MavenSOAT
 
Comment développer pour Linux avec Delphi
Comment développer pour Linux avec DelphiComment développer pour Linux avec Delphi
Comment développer pour Linux avec Delphi
pprem
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 

Tendances (16)

Utiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'imagesUtiliser des dessins vectoriels à la place d'images
Utiliser des dessins vectoriels à la place d'images
 
What’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. FornaciariWhat’s Next Replay! Lyon 2011 - F. Fornaciari
What’s Next Replay! Lyon 2011 - F. Fornaciari
 
What’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. DarmontWhat’s Next Replay! Lyon 2011 - G. Darmont
What’s Next Replay! Lyon 2011 - G. Darmont
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011Deploiement continu AgileFfrance 2011
Deploiement continu AgileFfrance 2011
 
Cs4 design premium — winne
Cs4 design premium — winneCs4 design premium — winne
Cs4 design premium — winne
 
Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012
Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012
Des vidéos libres et accessibles sur le Web, un pari impossible ? - RMLL 2012
 
Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Introduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuéesIntroduction aux problématiques des architectures distribuées
Introduction aux problématiques des architectures distribuées
 
Sonar-Hodson-Maven
Sonar-Hodson-MavenSonar-Hodson-Maven
Sonar-Hodson-Maven
 
20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven20090615 - Ch'ti JUG - Apache Maven
20090615 - Ch'ti JUG - Apache Maven
 
Présentation Maven
Présentation MavenPrésentation Maven
Présentation Maven
 
Comment développer pour Linux avec Delphi
Comment développer pour Linux avec DelphiComment développer pour Linux avec Delphi
Comment développer pour Linux avec Delphi
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 

Similaire à Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4 Sydney

Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
pprem
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jour
pprem
 
FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement
Anne Nicolas
 
Introduction au développement Windows Phone 8
Introduction au développement Windows Phone 8Introduction au développement Windows Phone 8
Introduction au développement Windows Phone 8
Jean-Sébastien Dupuy
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
pprem
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
pprem
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
pprem
 
Photoshop cs4 lisez-moi
Photoshop cs4   lisez-moiPhotoshop cs4   lisez-moi
Photoshop cs4 lisez-moiCamaralon
 
Photoshop Cs4 — Lisez Moi -imarah.net-
Photoshop Cs4 — Lisez Moi -imarah.net-Photoshop Cs4 — Lisez Moi -imarah.net-
Photoshop Cs4 — Lisez Moi -imarah.net-guest07571d
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCL
pprem
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Cellenza
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
Romain Chalumeau
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
Firas Kouẞàa
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
Atelier IHM Polytech Nice Sophia
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
pprem
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
XebiaLabs
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
Julien Vq
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
pprem
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
Microsoft
 

Similaire à Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4 Sydney (20)

Utiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateformeUtiliser l'EDI pour développer en multiplateforme
Utiliser l'EDI pour développer en multiplateforme
 
Diffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jourDiffuser nos logiciels et leurs mises à jour
Diffuser nos logiciels et leurs mises à jour
 
FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement FusionDirectory : Industrialisation du déploiement
FusionDirectory : Industrialisation du déploiement
 
Introduction au développement Windows Phone 8
Introduction au développement Windows Phone 8Introduction au développement Windows Phone 8
Introduction au développement Windows Phone 8
 
Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?Quoi de neuf dans la version 11 Alexandria ?
Quoi de neuf dans la version 11 Alexandria ?
 
Embarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobilesEmbarquer une base de données locale dans vos logiciels et applications mobiles
Embarquer une base de données locale dans vos logiciels et applications mobiles
 
Faire des applications web avec Delphi
Faire des applications web avec DelphiFaire des applications web avec Delphi
Faire des applications web avec Delphi
 
Photoshop cs4 lisez-moi
Photoshop cs4   lisez-moiPhotoshop cs4   lisez-moi
Photoshop cs4 lisez-moi
 
Photoshop Cs4 — Lisez Moi -imarah.net-
Photoshop Cs4 — Lisez Moi -imarah.net-Photoshop Cs4 — Lisez Moi -imarah.net-
Photoshop Cs4 — Lisez Moi -imarah.net-
 
Photoshop cs4 lisez-moi
Photoshop cs4   lisez-moiPhotoshop cs4   lisez-moi
Photoshop cs4 lisez-moi
 
Découvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCLDécouvrez FireDAC pour la VCL
Découvrez FireDAC pour la VCL
 
Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1Au coeur du framework .net 4.5.1
Au coeur du framework .net 4.5.1
 
Docker le buzz est il justifié ?
Docker le buzz est il justifié ? Docker le buzz est il justifié ?
Docker le buzz est il justifié ?
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Formation mobile-cross-platform
Formation mobile-cross-platformFormation mobile-cross-platform
Formation mobile-cross-platform
 
Internationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMXInternationaliser les projets VCL / FMX
Internationaliser les projets VCL / FMX
 
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �Amener vos applications Dockerisées jusqu’en production avec XebiaLabs �
Amener vos applications Dockerisées jusqu’en production avec XebiaLabs
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
 
Delphi et les tests unitaires
Delphi et les tests unitairesDelphi et les tests unitaires
Delphi et les tests unitaires
 
10 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 810 tips pour améliorer les performances de vos applications Windows 8
10 tips pour améliorer les performances de vos applications Windows 8
 

Plus de pprem

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
pprem
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
pprem
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
pprem
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
pprem
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
pprem
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
pprem
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphi
pprem
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
pprem
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
pprem
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
pprem
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
pprem
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
pprem
 
Créer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composantCréer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composant
pprem
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
pprem
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMX
pprem
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
pprem
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
pprem
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
pprem
 
Trafic
TraficTrafic
Traficpprem
 

Plus de pprem (19)

Using FireMonkey as a game engine
Using FireMonkey as a game engineUsing FireMonkey as a game engine
Using FireMonkey as a game engine
 
Using Delphi as a no code development environment
Using Delphi as a no code development environmentUsing Delphi as a no code development environment
Using Delphi as a no code development environment
 
Easy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkeyEasy coding a multi device game with FireMonkey
Easy coding a multi device game with FireMonkey
 
Utiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéoUtiliser FireMonkey comme moteur de jeux vidéo
Utiliser FireMonkey comme moteur de jeux vidéo
 
Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !Coder sans coder : Delphi en mode no code !
Coder sans coder : Delphi en mode no code !
 
Utilisation de git avec Delphi
Utilisation de git avec DelphiUtilisation de git avec Delphi
Utilisation de git avec Delphi
 
Développer une application pour Android TV avec Delphi
Développer une application pour Android TV avec DelphiDévelopper une application pour Android TV avec Delphi
Développer une application pour Android TV avec Delphi
 
Sauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobilesSauvegarder et restaurer l'état des applications mobiles
Sauvegarder et restaurer l'état des applications mobiles
 
Gérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et AndroidGérer le clavier virtuel sous iOS et Android
Gérer le clavier virtuel sous iOS et Android
 
Faire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCLFaire une interface adaptive avec la VCL
Faire une interface adaptive avec la VCL
 
Faire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkeyFaire une interface adaptive avec FireMonkey
Faire une interface adaptive avec FireMonkey
 
QR codes et codes à barres sous Delphi
QR codes et codes à barres sous DelphiQR codes et codes à barres sous Delphi
QR codes et codes à barres sous Delphi
 
Créer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composantCréer des composants visuels sans faire de composant
Créer des composants visuels sans faire de composant
 
Des solutions de synchronisation de données
Des solutions de synchronisation de donnéesDes solutions de synchronisation de données
Des solutions de synchronisation de données
 
Découvrez FireDAC pour FMX
Découvrez FireDAC pour FMXDécouvrez FireDAC pour FMX
Découvrez FireDAC pour FMX
 
POC Notes de frais
POC Notes de fraisPOC Notes de frais
POC Notes de frais
 
Comment écrire des articles de blog à succès
Comment écrire des articles de blog à succèsComment écrire des articles de blog à succès
Comment écrire des articles de blog à succès
 
Gagner de l'argent sur Internet
Gagner de l'argent sur InternetGagner de l'argent sur Internet
Gagner de l'argent sur Internet
 
Trafic
TraficTrafic
Trafic
 

Présentation de Delphi 10.4 Sydney, C++Builder 10.4 Sydney et RAD Studio 10.4 Sydney

  • 1.
  • 2. Patrick Prémartin (MVP Delphi – Orléans) Patrick.premartin@olfsoft.com https://developpeur-pascal.fr Laurent Navarro (MVP C++ Builder & Delphi – Toulouse) ln@altidev.com http://www.altidev.com Grégory Bersegeay (MVP Delphi – Niort ) gregory.bersegeay@gbesoft.fr http://www.gbesoft.fr
  • 4. RAD Studio propose de puissants contrôles VCL pour Windows 10 et permet le développement multiplateforme pour Windows, Mac, Linux, iOS and Android avec FireMonkey (FMX). Développement visuel rapide
  • 5. RAD Studio est l’environnement de développement ultime avec les fonctionnalités C++ et Delphi que les développeurs aiment : design, code, debug et test pour le déploiement multiplateforme avec des performances natives. Qu’est-ce que RAD Studio ? Prêt pour le cloud indépendant de la plateforme.MULTI PLATEFORME natif
  • 6. Les OS supportés par RAD Studio 10.4 Linux 64-bit Ubuntu & Red Hat Enterprise (Delphi seulement) macOS Catalina (Delphi seulement) iOS 13Android 10 (64-bit pour Delphi seulement)
  • 7. ● C’est la plateforme la plus importante pour les clients actuels. ● Ajoutez des fonctionnalités Windows 10 sans casser la compatibilité avec Windows 7. ● Windows 7 n’est plus supporté par Microsoft depuis janvier 2020. Windows 10 est le roi
  • 8. Le multi plateforme est l’avenir
  • 9. La plupart des projets commencent en desktop Faire des apps dédiées plutôt que copier le desktop Plus de solutions pour accéder au desktop depuis un butineur.
  • 11. Les licences • Dans la version 10.4 Sydney : • Delphi permet de faire du développement en Pascal pour Windows, macOS, Linux, iOS et Android. • C++Builder permet de faire du développement en C++ pour Windows et Android . • RAD Studio est un bundle formé de Delphi et C++Builder.
  • 12. Les licences • Une licence 10.4 donne aussi accès aux versions précédentes de Delphi, C++Builder et RAD Studio pour cibler des plateformes techniques obsolètes comme de vieilles versions d’Android ou macOS/iOS en 32 bits. • Pour le détail des fonctionnalités rendez-vous sur https://www.embarcadero.com/docs/rad-studio-feature-matrix.pdf
  • 13. Les licences • Il existe plusieurs types de licences : Named User, Network Named User et Network Concurrent User. • Il existe plusieurs niveaux de licences : Academic, Community Edition, Professional, Enterprise, Architect et Trial. • Renseignez-vous auprès Barnsten, distributeur pour la France, la Suisse, le BENELUX et toutes les pays francophones. https://www.barnsten.com/fr/
  • 14. « Named User» • Les licences nommées sont les plus classiques : elles sont attachées à un compte développeur EDN. • Chaque développeur a sa licence et l’utilise sur son ou ses ordinateurs selon le produit concerné. • Personne d’autre que le propriétaire de la licence n’est autorisé à utiliser son logiciel de développement. Elles ne sont pas transmissibles.
  • 15. « Network Named Users» • Les licences nommées sont enregistrées auprès d’Embarcadero. Les licences nommées en réseau sont gérées chez vous. • Si vous avez des développeurs occasionnels qui peuvent utiliser les postes de travail de vos développeurs habituels, c’est le type de licence qu’il vous faut. • Vous pouvez en effet changer leur propriétaire quand vous voulez, directement chez vous, et être toujours en règle.
  • 16. « Network Concurrent User Licences » • Si vous avez des développeurs occasionnels vous pouvez aussi prendre un pool de licences. • Ces licences fonctionnent à l’utilisation : quand les utilisateurs en ont besoin ils prennent un ticket disponible (valide 30 jours si pas de connexion à votre réseau) et le libère lorsqu’ils ont terminé de travailler.
  • 17. Les types de licence • Pour en savoir plus sur les types de licences vous pouvez consulter cette explication : https://code-partners.com/network-licensing-in-rad-studio/ • Bien entendu vous pouvez contacter votre distributeur et lui expliquer vos besoins pour avoir une proposition adaptée à vos usages.
  • 18. Edition « Academic » • La licence Academic a une durée de validité de 1 an. • Elle est destiné aux établissements scolaires (tous niveaux), aux enseignants et aux étudiants. • Elle a les mêmes fonctionnalités qu’une édition Enterprise. • Elle doit être utilisée à des fins d’apprentissage. Toute utilisation commerciale est interdite.
  • 19. Edition « Community Edition » • La licence Community Edition est valide 1 an. Elle est gratuite. • Pas d’accès aux mises à jour. A renouveler annuellement si l’utilisateur se conforme toujours aux règles d’utilisation. • Les fonctionnalités sont les mêmes que l’édition Professional. • Destinée à un usage personnel, son usage commercial est limité.
  • 20. Edition « Community Edition » • La Community Edition n’est pas disponible en version 10.4 pour le moment. • C’est toujours la 10.3.3 pour les nouvelles demandes. La 10.4 arrivera plus tard. • Embarcadero a décidé de privilégier les clients sous licences payantes afin de limiter les problèmes de téléchargement et les trop nombreux abus constatés depuis 2 ans sur la CE.
  • 21. Edition « Professional » • La licence Professional n’a pas de limite de validité. • Elle intègre les mises à jour durant un an. Possibilité de continuer la souscription avec un tarif très avantageux. • Permet de faire tous types de développements. Pas de bases de données d’entreprise ni fonctionnalités client-serveur. • Pas de restriction d’usage.
  • 22. Edition « Enterprise » • La licence Enterprise n’a pas de limite de validité. • Elle intègre les mises à jour durant un an. Possibilité de continuer la souscription avec un tarif très avantageux. • Intègre les fonctionnalités de l’édition Professional, DataSnap, FireDAC complet (incluant des bases client-serveur) et RAD Server. • Pas de restriction d’usage.
  • 23. Edition « Enterprise » • Compilateur Linux et FMX Linux inclus pour Delphi. • Licence de déploiement IBToGo (Interbase embed) incluse. • Une licence de déploiement mono site pour RAD Serveur incluse. • Pack de drivers CData Entreprise Connector pour FireDAC inclus (licence de 1 an).
  • 24. Edition « Architect » • La licence Architect n’a pas de limite de validité. • Elle intègre les mises à jour durant un an. Possibilité de continuer la souscription avec un tarif très avantageux. • Intègre les fonctionnalités de l’édition Enterprise. • Pas de restriction d’usage.
  • 25. Edition « Architect » • Licences logicielles fournies : • Sencha ExtJS Professional Edition • Aqua Data Studio • Ranorex • Une licence de déploiement multi site de RAD Serveur est incluse.
  • 26. Edition « Trial » • La licence est valable 30 jours. • Elle correspond à une version RAD Studio Architect (sans les logiciels tiers). • Sa licence n’autorise qu’une utilisation à des fins d’évaluation. Aucun développement ne doit être fait (et encore moins distribué) avec cette licence.
  • 27. Ai-je droit à la 10.4 ? • Selon l’ancienneté et le type de licence achetée il est possible que vous puissiez tout simplement télécharger l’installeur depuis le nouveau portail client : https://my.embarcadero.com • Si votre licence est trop ancienne ou pas au niveau qui vous intéresse, contactez votre distributeur : une mise à niveau est toujours possible.
  • 29. Installation • Il y a désormais le même programme d’installation que l’on soit online ou offline. Il passe par GetIt dans les deux cas. • L’ISO a été remplacé par deux fichiers (exe + gof). On peut les mettre sur clé USB ou n’importe quel support et lancer l’installation offline à partir de là.
  • 30. Installation • Les modifications de compilateurs et d’options installés sont maintenant possibles pour les installations offline depuis l’IDE.
  • 31. Installation • Il n’y a plus de distinction entre 32 et 64 bits sur les options liées aux compilateurs. Les compilateurs permettant un déploiement sont les seuls proposés. • Ca simplifie l’expérience d’installation et permet d’aller à l’essentiel.
  • 32. Installation • Pour les utilisateurs désireux d’avoir les compilateurs « obsolètes » ou cibler des plateformes qui ne le sont plus peuvent installer les versions précédentes avec leurs patchs. • La liste des plateformes ciblées est disponible sur la documentation en ligne à l’adresse http://docwiki.embarcadero.com/PlatformStatus/en/Main_Page
  • 33. Installation • Patchs 10.3.3 Rio : https://developpeur-pascal.fr/p/___00c-les- patchs-a-installer-sur-la-version-rio-1033-de-delphi-c-builder-et-rad- studio.html • Patchs 10.2.3 Tokyo : https://developpeur-pascal.fr/p/___004-les- patchs-a-installer-sur-la-version-tokyo-1023-de-delphi-c-builder-et- rad-studio.html
  • 34. GetIt
  • 35. GetIt • Grâce au nouveau système d’installation, Embarcadero va propulser les correctifs (patchs / hotfix) sous forme de paquets GetIt. • Leur installation sera simplifiée par rapport aux versions précédentes. • Personne ne pourra passer à côté car l’IDE nous informe de la présence de patchs dès l’écran d’accueil et une rubrique leur est dédiée sur le catalogue GetIt.
  • 36. GetIt • GetIt permet de désinstaller les paquets installés. • Les temps de réponse lors de l’affichage du catalogue de paquets et du passage d’une rubrique à une autre ont été améliorés.
  • 37. GetIt • GetIt détecte les paquets installés à mettre à jour. Nous pouvons ainsi rester à niveau par rapport à notre installation. • Il suffit d’activer l’option « rechercher automatiquement les mises à jour GetIt » depuis « Outils / Options / IDE / Gestionnaire de packages GetIt ». • De plus les paquets installés à mettre à jour ont leur rubrique dans le catalogue GetIt, même sans activer cette option.
  • 38. GetIt • Pour bénéficier de GetIt si vous avez fait l’installation en ISO, vous devez saisir cette commande depuis le dossier d’installation de RAD Studio : GetItCmd.exe -c=useonline • Sans cela le catalogue de GetIt s’affichera mais il ne pourra pas faire d’installation de son contenu.
  • 39. IDE
  • 40. IDE • Modifications des thèmes clair / sombre pour améliorer la prise en charge des moniteurs High DPI / 4K • Activation automatique (sur demande) du bon thème en fonction de celui de Windows • Amélioration du système de barre de titre
  • 41. IDE • Accélération de l’affichage des options d’environnement. • Accélération de l’affichage des options de projet et modification de certains écrans de paramétrage (notamment liés à LSP).
  • 42. IDE • Amélioration de l’IDE insight (recherche dans l’intégralité des textes de l’IDE depuis sa barre de titre) • Modification sur les recherches notamment pour l’option « find in files » dont l’affichage des résultats a été améliorée.
  • 43. IDE • Modifications sur l’éditeur de code : • choix du langage pour la mise en couleurs du texte, • choix de l’encodage du fichier, • modification de la taille des textes
  • 44. IDE • Suppression de l’historique du presse papier dans l’inspecteur d’objets
  • 45. Page d’accueil • L’accueil de l’IDE a été revu. • On y trouve toujours les accès pour la création de projets et l’ouverture de projets (favoris ou les derniers ouverts). • Le flux des dernières vidéos publiées sur la chaîne YouTube d’Embarcadero permet de ne rien louper (pour les anglophones).
  • 47. Compilateurs • Delphi 10.4 Sydney possède les compilateurs suivants : • Android en 32 et 64 bits pour processeurs ARM • Linux en 64 bits pour processeur Intel (éditions Entreprise, Architect, Trial et Academic) • macOS en 64 bits pour processeurs Intel • iOS en 64 bits pour processeurs ARM • Windows en 32 et 64 bits pour processeurs Intel • Les compilateurs iOS et macOS en 32 bits ont été retirés car Apple ne permet plus de diffuser de logiciels compilés en 32 bits.
  • 48. Révolution dans l’éditeur de code • Implémentation de LSP (Language Server Protocol) dans l’éditeur de code. • Code Insight est désormais traité par un autre processus. • Error Insight est également amélioré et ça se sent à la saisie. • Les temps de réponse dans l’IDE sont nettement améliorés sur les gros projets.
  • 49. Révolution dans l’éditeur de code • Plus de possibilités de recherches notamment sur la complétion de code. • Il n’y a plus de différence entre le mode normal et le mode débogage dans l’éditeur de code ! • Efficace même sur des projets de plusieurs millions de lignes de code.
  • 50. Révolution dans l’éditeur de code • Il est possible de désactiver LSP si on préfère le fonctionnement historique de l’assistance en cours de saisie. Ca se fait depuis « Outils / Options / Interface utilisateur / Options de l’éditeur / Options du source ». • Il est aussi possible d’utiliser un autre serveur LSP (selon sa compatibilité) pour Delphi ou pour l’un des autres langages pris en charge par l’éditeur. Référencez simplement votre serveur LSP dans le même écran des options de l’EDI.
  • 52. Chaînes de caractères • Jusqu’à présent les chaînes de caractères pouvaient être « 1-based » ou « 0-based » selon la plateforme et la configuration de l’EDI ou de chaque projet. • Cela a pu rester très flou pour les développeurs venant de la VCL et d’une façon générale pour tout le monde, ne sachant pas trop sur quoi on travaille si on ne fait pas attention.
  • 53. Chaînes de caractères • A partir de Delphi 10.4 Sydney les choses changent et seront plus claires. • Il n’y a plus de distinction entre plateformes LLVM et les autres : la directive de compilation ZEROBASEDSTRING est désactivé par défaut sur toutes les plateformes.
  • 54. Chaînes de caractères • Les chaînes utilisées comme tableau ou avec les anciennes fonctions ou procédures de la RTL sont toutes des « 1-based string». • Le premier caractère est à l’indice 1 de la chaîne. Le dernier caractère est à l’indice N, N étant la longueur de la chaîne. • Attention : si vous compilez votre projet sur une version antérieure et n’avez pas forcé le ZEROBASEDSTRING dans l’IDE ou votre projet vous retrouvez l’ancien fonctionnement !
  • 55. Chaînes de caractères • Les chaînes manipulées par les méthodes de TStringHelper sont toutes traitées comme des « 0-based string». • Le premier caractère est à l’indice 0 de la chaîne. Le dernier caractère est à l’indice N-1, N étant la longueur de la chaîne. • C’était déjà le cas pour toutes les plateformes avant ce changement.
  • 56. Chaînes de caractères • Embarcadero recommande l’utilisation des Helpers sur les chaînes pour lever toute ambiguïté quelle que soit la version de Delphi et le type de chaîne sur lequel on travaille. • Les helpers utilisent des « 0-based string » même si la chaîne ne l’est pas. Ils font la conversion d’indice pour nous.
  • 57. Chaînes de caractères • Lors de votre passage d’un projet multiplateforme antérieur à Delphi 10.4 Sydney soyez très attentifs à la façon dont vous gériez les chaînes sur les plateformes mobiles et les plateformes desktop. • Si vous ne vérifiez pas votre code vous risquez des anomalies après recompilation. • Activer ZEROBASEDSTRING sur les plateformes mobiles pour éviter ces anomalies en attendant votre révision du code. X
  • 58. Custom Managed Record : Rappel sur les record • Les record sont des structures (agrégation de variables) qui peuvent contenir des méthodes. • On peut aussi les présenter comme des classes par valeur, • Ils n'ont pas besoin d'être alloués dynamiquement (et donc libérés). • TPoint & TRect sont des record pas des class • record et class partagent beaucoup de concepts. • La principale limite des record est qu'il n'y a pas d'héritage. • record est managé s'il contient un type managé (string, interface, …)
  • 59. Custom Managed Record • Les custom managed record s'approchent un peu du concept de classe de C++ en apportant : • Code invoqué implicitement lors de l'initialisation class operator TMyRecord.Initialize (out Dest: TMyRecord); • Code invoqué implicitement lors de la destruction class operator TMyRecord.Finalize(var Dest: TMyRecord); • Possibilité de redéfinir la gestion de l'assignation class operator TMyRecord.Assign (var Dest: TMyRecord ;const [ref] Src: TMyRecord); • Les constructeurs sont toujours possibles, mais ils sont invoqués après l'initialisation.
  • 60. Custom Managed Record • Le code Initialize est invoqué lors de la création du record c’est- à-dire dans les cas suivants : • Déclaration var, inline var, tableau statique • SetLength pour les tableaux dynamiques • Appel fonction avec paramètre par valeur ou valeur de retour • Le code Finalize est invoqué lors de la destruction du record c’est- à-dire dans les cas suivants : • Fin de la fonction pour les variables déclarées dans la section var et les paramètres passés par valeur. • Fin du scope begin/end pour les variables inline • Invoqué quelque soit le chemin de retour (y compris suite à une exception) comme une section try/finally
  • 61. Custom Managed Record • Code exécuté lors de la création d'un record • Initialize généré par le compilateur comme jusqu'à présent • Code Initialize personnalisé • Constructeur si create invoqué • Code exécuté lors de la suppression d'un record • Code Finalize personnalisé • Finalize généré par le compilateur comme jusqu'à présent • Vous pouvez ne définir qu'une seule des 2 méthodes.
  • 62. Custom Managed Record • Le code Assign est invoqué dans les cas suivants : • Assignation avec l'opérateur := • Passage de paramètres par valeur, généralement pas s'ils sont const, const [ref] recommandé • Affectation des valeurs de retour • N'est pas appelé si déclaration avec affectation depuis le constructeur • var v3:TMyRecord:=TMyRecord.create('Valeur de V3'); • Cet opérateur est appelé à la place de l'opérateur par défaut, il doit donc gérer complètement l'affectation.
  • 63.
  • 64. TMyRecord.Initialize TMyRecord.Initialize TMyRecord.Assign Contenu de v1 dans Valeur par defaut v1=Contenu de v1 modifié v2=Contenu de v1 -------------------------------------------- TMyRecord.Initialize TMyRecord.Create Valeur de V3 v3=Valeur de V3 -------------------------------------------- TMyRecord.Initialize TMyRecord.Initialize TMyRecord.Create Valeur de V4 TMyRecord.Assign Valeur de V4 dans Valeur par defaut TMyRecord.Finalize de Valeur de V4 v4=Valeur de V4 -------------------------------------------- TMyRecord.Finalize de Valeur de V4 TMyRecord.Finalize de Valeur de V3 TMyRecord.Finalize de Contenu de v1 TMyRecord.Finalize de Contenu de v1 modifié
  • 65. Custom Managed Record : Pourquoi faire ? • Les custom managed record sont les fondations de futurs mécanismes. • Des exemples intéressants inspirés du monde C++ pourraient être : • Les pointeurs intelligents • Le mécanisme de gardien entre autres utilisé pour la libération automatique des verrous • Gestion Nullable https://dalijap.blogspot.com/2020/05/delphi-nullable-with-custom-managed.html • Limitation : Pour l'instant, l'intégration avec C++ Builder n'est pas opérationnelle dans le .hpp
  • 66. Custom Managed Record : Smart TStringList SL1=Ligne 1 Ligne 2 Ligne 3 SL2=Ligne 1 Ligne 2
  • 68. Nouveau Debugger Win64 • Nouvelle génération de debugger basé sur LLDB bien plus complet • Permet de meilleures évaluations • Supporte les types standard de la STL C++ : std::string, wstring, vector, map, shared_ptr, … • Extensible par des scripts python
  • 69. Nouvelles librairies • Disponibles depuis GetIt • Boost 1.70 04/2019
  • 70. Autres nouveautés C++Builder • FreeAndNil est à présent type-safe, il y a à présent 2 implémentations • void FreeAndNil(T** obj) • void FreeAndNil(T* &obj) (Nouveau) • Format existe désormais en version variadic template str=Format("char*=%s , wchar*=%s , us=%s int=%d" ,ARRAYOFCONST(("test",L"WTEST",Label1->Caption,15)) ); • Peut à présent s'écrire : str=Format("char*=%s , wchar*=%s , us=%s int=%d" ,String("test"),L"WTEST",Label1->Caption,15); • char* requiert un transtypage en String/UnicodeString
  • 71. Autres nouveautés C++Builder • Améliorations générale des compilateurs et de la RTL • Intégrations d’améliorations de la STL provenant de Dinkumware • Amélioration de la compatibilité avec de nombreuses libraires C++ standards par l'ajout de fonctions manquantes dans la RTL. • Améliorations de Cmake
  • 73. FireDAC • Mise à jour des drivers : • FireBird • PostgreSQL • SQLite • La liste des bases de données et drivers supportés est sur http://docwiki.embarcadero.com/RADStudio/Sydney/en/Databases_( FireDAC)
  • 74. FireDAC - SQLite • Possibilité de changer le mode de chargement de la librairie SQLite. • Le mode statique fait un lien avec les librairies fournies par Embarcadero. • Le mode dynamique permet de prendre la librairie que l’on désire (à partir de la version 3.7.7.1). • Plus d’infos sur http://docwiki.embarcadero.com/RADStudio/Sydney/en/Connect_to _SQLite_database_(FireDAC)
  • 75. Live Bindings • Optimisations et modifications de l’architecture de Live Bindings entrainant des améliorations de temps de réponse dans le concepteur et à l’utilisation. • Prise en compte des informations d’affichage provenant des champs d’un ensemble de données à travers Live Bindings. • Améliorations au niveau de l’expert, notamment sur la saisie des formatages.
  • 76. Internet • Mise à niveau des composants HTTP et REST avec les nouveautés liées à https. • Possibilité d’annuler/interrompre des requêtes REST asynchrones. • TLS 1.3 supporté par TNetHTTPClient
  • 77. Internet • TAmazonRegion est désormais un champ de saisie plutôt qu’une liste pour permettre d’accéder à toutes les régions AWS sans restriction • Mise à niveau de la librairie Indy installée par défaut
  • 78. Internet (SOAP) • Possibilité de fixer un certificat commun aux clients SOAP HTTP (TStreamLoader). • Nouvelles propriétés SendTimeout et UseDefaultCredentials sur THTTPReqResp. • Nouveaux événements sur THTTPReqResp : onPostingData et onHttpError.
  • 79. Librairie JSON • Jusqu’à 50% d’amélioration des performances sur le composant TJSONReader • Accès à un élément de TJSONArray directement, sans devoir passer par sa propriété Items[].
  • 80. Parallel Programing Library (PPL) • Optimisations et améliorations de la stabilité de la librairie. • Ajout d’un timer sur ForceQueue pour différer l’exécution du code mis en file d’attente sans avoir à faire un nouveau thread. • Améliorations sur la prise en charge des exceptions. • Optimisations sur WaitForAll et WaitFor sur les tâches.
  • 81. AppTethering • Possibilité de fixer les timeouts. • Possibilité pour une ressource de savoir quand la communication est terminée. • Optimisations diverses et amélioration de la qualité.
  • 82. Autres modifications sur la RTL • Grosse amélioration des performances sur les RTTI (impactant la performance globale des applications) • Ajout de WriteInt64 et ReadInt64 sur TCustomIniFile • Ajout de isEmpty sur TGUID • Modification du buffer par défaut sur le CopyFrom des TStream (1Mb au lieu de 60Ko) • Amélioration de la performance du QuickSort de System.Classes
  • 83. Autres modifications sur la RTL • Ajout de fonctions permettant de compter des bits (à 1 ou 0) dans des nombres de différentes tailles.(CountLeadingZerosXX, CountTrailingZerosXX, CountPopulationXX avec XX = 32 ou 64). • L’assignation d’une TStringList à une autre a été optimisé. • Des dépendances plus nécessaires ont été retirées pour permettre à des applications consoles de tourner sans problème sur Windows Server Core.
  • 85. Comparaisons de chaînes • La méthode GetHashCode qui fait partie de TStringHelper était utilisée pour des comparaisons de chaînes et le hashage de celles-ci. • Jusqu’à Delphi 10.4 Sydney le texte hashé était préalablement mis en majuscules. Ce n’est plus le cas. • Impact possible sur des mots de passes ou d’autres textes que vous auriez stockés en version hashée par cette méthode.
  • 86. Comparaisons de chaînes • Si vous avez stocké un hash et devez le comparer à un nouveau hash, pensez à mettre la chaîne à comparer en majuscules avant de la hasher. • Idéalement, si vous en avez la possibilité, recalculez les hashs de tous les textes que vous auriez stockés dans ce format.
  • 87. FreeAndNil change en 10.4 Sydney
  • 88. FreeAndNil change en 10.4 Sydney • La déclaration de FreeAndNil change à partir de Delphi 10.4 Sydney. • Normalement cela ne devrait pas avoir d’impact sur vos codes sources, mais si vous l’utilisiez sur des variables non objets (interfaces par exemple), vous aurez des erreurs de compilation et devrez corriger votre code.
  • 90. Correction typographique • La méthode THTTPClient.CreateFormFromStrings était mal orthographiée dans sa déclaration. • Son nom a été corrigé. • Si vous l’utilisiez dans vos programmes il vous suffira de corriger la faute de frappe originelle qui sera signalée lors de la compilation de vos projets.
  • 92. Styles VCL • La VCL continue à évoluer pour nous donner plus de liberté et d’efficacité dans la prise en charge d’écrans High DPI et 4K. • Le format des styles VCL a été modifié afin de permettre l’utilisation de plusieurs formats d’images dans le concepteur de styles bitmap sur le même principe que pour les styles FMX. • Des styles existants et de nouveaux styles High-DPI sont disponibles sur GetIt et installés avec l’IDE.
  • 93. Styles VCL • Autre grosse nouveauté au niveau des styles VCL : on peut désormais les utiliser directement sur les composants visuels. • Les composants visuels ont une nouvelle propriété « StyleName » qui prend le style qui doit leur être appliqué. • Vide, c’est le style de la fiche ou du projet. • Avec un nom, c’est le style ayant ce nom (s’il est référencé dans le projet).
  • 94. Images High DPI / 4K • La version 10.3 Rio a ajouté les composants TImageCollection pour stocker des images dans différents formats et TVirtualImageList pour y accéder depuis nos fiches. • La version 10.4 Sydney ajoute le composant TVirtualImage pour afficher une image multi résolutions sur nos fiches, prise dans une collection d’images.
  • 95. Images High DPI / 4K • Dans les collections d’images on peut aussi se référer aux images par leur nom plutôt que leur index dans la collection. • Une propriété ImageName a fait l’apparition sur les composants utilisant les listes d’images. Elle permet de ne plus dépendre de l’index des images (au cas où il changerait).
  • 96. Images High DPI / 4K • Modification du TSpeedButton pour permettre d’utiliser une image depuis une liste. • Modification dans TScaledGraphicDrawer. On peut référencer notre propre algorithme en le surchargeant. • Amélioration de l’affichage des images embarquées dans des composants standards (TDBImage, MediaPlayer, DBGrid, TDBNavigator, Bitmap, …) X
  • 97. Navigateur web • Le nouveau composant TEdgeBrowser permet d’utiliser Microsoft Edge dans sa version Chromium. Ce composant remplace le TWebBrowser qui s’appuyait sur Internet Explorer. • Il permet ainsi de bénéficier d’un moteur de rendu Web plus performant, plus respectueux des standards et maintenu. • Le TWebBrowser perdure et dispose de deux nouvelles propriétés : SelectEngine (permet d’activer le moteur Edge ou Internet Explorer) et ActiveEngine (permet de savoir quel moteur est utilisé).
  • 98. Navigateur web • Le navigateur Edge basé sur Chromium ne fait pas partie intégrante de Windows. Pour utiliser le composant, des pré-requis sont nécessaires : o disposer du navigateur Edge basé sur Chromium (version 82.0.430.0 minimum). Il est téléchargeable depuis le site de Microsoft : https://www.microsoftedgeinsider.com/fr-fr/download o le composant s’appuie sur le contrôle WebView2 de Microsoft. Veillez à bien sélectionner la version du Canal Canary
  • 99. Navigateur web Microsoft fournit WebView2 sous forme de 2 dll (une 32 bits et l’autre 64 bits) qui ont le même nom WebView2Loader.dll. Il est disponible évidemment sur le gestionnaire de package de Microsoft (NuGet) à l’adresse : https://www.nuget.org/packages/Microsoft.Web.WebView2 Il est également disponible via GetIt (en recherchant par exemple WebView2). Les dll seront installées dans le répertoire Documents de l’utilisateur sous: ..EmbarcaderoStudio21.0CatalogRepositoryEdgeView2SDK- 0.9.488Bin
  • 100. Navigateur web Enfin, il vous faudra recopier la dll adéquate (32 ou 64 bits) dans le répertoire de votre exécutable. Elle sera à déployer avec votre application.
  • 101. Navigateur web • L’utilisation du TEdgeBrowser est très similaire à celle du TWebBrowser. Les principales méthodes et événements se retrouvent avec les mêmes noms (navigate, goBack, goForward, refresh...). Cela facilite la migration TWebBrowser vers TEdgeBrowser. • Toutefois, tout ne pouvait pas être repris tel quel. De plus Edge Chromium est récent et n’est pas installé sur la majorité des postes Windows. C’est pour cela que le TWebBrowser a évolué avec l’ajout de deux nouvelles propriétés. SelectEngine permet donc de spécifier le moteur de rendu. Il est possible de spécifier Edge (le TWebBrowser se comporte alors comme le TEdgeBrowser et nécessite les mêmes pré-requis), Internet Explorer (le TWebBrowser conserve son comportement d’origine), Edge si disponible.
  • 102. Navigateur web • Bien évidemment, une nouvelle application exemple est fournie montrant les fonctionnalités du TEdgeBrowser. De même, la démonstration d’utilisation du TWebBrowser a été mise à jour.
  • 103. Barre de titre personnalisable • Le nouveau composant TTitleBarPanel permet de moderniser l’interface de votre application en plaçant ce que vous souhaitez dans sa barre de titre. • Pour se faire, le TForm se dote également d’une propriété CustomTitleBar qui va permettre de modifier les propriétés standards de la barre de titre mais également de lui associer un TTitleBarPanel.
  • 104. Barre de titre personnalisable • Le TTitleBarPanel est un composant visuel que l’on place sur le TForm. • Il peut être considéré comme un TPanel classique. On peut y déposer n’importe quel composant graphique, autant que nécessaire et les disposer selon ses désirs. Il devient possible d’ajouter des boutons, une zone de recherche… • Pour activer cette barre de titre personnalisée, il suffit d’associer le TTitleBarPanel à la propriété Control de CustomTitleBar et de mettre à true la proriété Enabled de CustomTitleBar.
  • 105. Barre de titre personnalisable • Il est possible d’ajouter des boutons personnalisables aux côtés des boutons systèmes. Attention dans ce cas, le dessin d’une image sur un tel bouton doit se faire via les méthodes de dessin de GDI+. • Une nouvelle application exemple est fournie montrant les possibilités offertes par le TTitleBarPanel.
  • 106. Autres modifications sur la VCL • De nombreux correctifs et des mises à jour sur l’intégration des API Windows. • Ajout d’un onLoadPicture et DoLoadPicture sur TDBImage qui sont déclenchés lors d’un chargement d’image par le composant.
  • 108. Modifications sur macOS : Metal • Apple a annoncé en juin 2019 qu’ils ne fourniraient plus OpenGL sur leurs OS. Les développeurs sont invités à utiliser Metal dès que possible. • Embarcadero ajoute le support de la librairie Metal sur macOS et iOS à partir de Delphi 10.4 Sydney pour remplacer Quartz API & OpenGL. • Son activation n’est pas automatique. C’est aux développeurs de la demander dans leurs projets.
  • 109. Modifications sur macOS : Metal • Si vous voulez activer Metal sur vos projets FMX mettez simplement GlobalUseMetal à True avant d’afficher quoi que ce soit (idéalement dans le bloc d‘initialisation d’une unité de configuration utilisée par votre projet. • Cette variable globale n’est prise en charge que sur iOS et macOS lorsque Metal est présent.
  • 110. Modifications sur macOS : Metal • Si vous utilisez Metal dans vos projets vous pourrez aussi changer ces deux paramètres : • GlobalEventDrivenDisplayUpdates http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Types. GlobalEventDrivenDisplayUpdates • GlobalPreferredFramesPerSecond http://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.Types. GlobalPreferredFramesPerSecond
  • 111. Autre modification sur macOS • Modification du TMediaPlayer sous macOS (AVFoundation)
  • 112. Modifications sur iOS • La librairie Metal fait aussi son apparition sur FireMonkey pour iOS. • A partir de juillet il faudra utiliser un « launch screen » sous le format « storyboard » pour soumettre des programmes à l’App Store d’Apple. Delphi 10.4 Sydney permet de générer ces fichiers depuis les options de projet. • Modification du TWebBrowser sous iOS (WKWebView API)
  • 113. Modifications sur iOS • On peut connaître le thème (sombre/clair) actuel de l’OS et on est notifié s’il change. • Le thème par défaut pour iOS avait déjà une version claire et une version sombre depuis Delphi 10.3.3 Rio. • On peut maintenant le gérer plus simplement pour nos propres thèmes.
  • 114. Modifications sur Android • Utilisation de AdoptOpenJDK au lieu du JDK d’Oracle. • Les projets sont maintenant compilés pour l’API 29 au minimum. • Amélioration du support de l’app bundle permettant de diffuser des projets en 32 et 64 bits dans un même fichier APK.
  • 115. Modifications sur Android • Nouvelle méthode TAndroidHelper.ShouldNativeLibrariesBeExtracted • Des améliorations de qualités et correctifs sur de nombreux domaines dont les senseurs, l’affichage en général et le TMemo.
  • 116. Modifications sur Windows • Nouvelle implémentation du TMemo pour mieux gérer IME (pour les langues internationales étendues) lors de la saisie et de l’affichage. • Pour activer la nouvelle implémentation du TMemo vous devez utiliser l’unité FMX.Memo.Style.New quelque part dans votre projet (une fois suffit). • Modification de l’intégration de DirectX pour améliorer le support des APPX pour Microsoft Store.
  • 117. Modifications sur Linux • Amélioration de l’intégration de FMX Linux. • Ajout de la plateforme Linux par défaut en création de projet FMX, comme pour les autres plateformes disponibles. • Possibilité d’utiliser le concepteur de fiches et ajouter des composants même en ayant le compilateur Linux activé.
  • 118. Autres modifications sur FMX • Nouveau composant TBufferedLayout pour gérer un affichage bufferisé des écrans FMX. • Hint, ShowHint et ParentShowHint ajoutés au composant TToolBar. • Amélioration du support des séquences ZWJ d’emoji dans les champs de saisie. • Amélioration des performances sur l’affichage des textes dans les TextLayout
  • 120. Modèle de mémoire unifié • A partir de la 10.4 Sydney on dit au revoir à l’automatic reference counting (ARC) sur les objets. • Le modèle mémoire est le même pour toutes les plateformes. • Nous devons supprimer les objets que nous avons créés et donc recommencer à utiliser la méthode Free ou la procédure FreeAndNil() y compris pour les codes destinés à Android et iOS.
  • 121. Modèle de mémoire unifié • La directive AUTOREFCOUNT est supprimée. • La directive NEXTGEN est supprimée. • La méthode DisposeOf qui permettait de forcer la suppression d’objets sans attendre le garbage collector appelle désormais Free pour toutes les plateformes.
  • 122. Modèle de mémoire unifié • Certains types « anciens » sont maintenant utilisables sur Android et iOS avec la désactivation de NEXTGEN. • C’est par exemple le cas de ANSIString (mais attention : les codes pages de Windows ne sont pas pris en charge).
  • 123. Modèle de mémoire unifié • ReportMemoryLeaksOnShutdown fournit par le gestionnaire de mémoire FastMM4 reste utilisé uniquement sous Windows. • Pour pister les fuites mémoires éventuelles en multiplateforme vous pouvez utiliser la librairie Delphi-LeakCheck : https://bitbucket.org/shadow_cs/delphi-leakcheck • Un exemple d’utilisation est disponible sur https://medium.com/@Zawuza/delphi-leakcheck-2242270ef42d
  • 125. Patrick Prémartin (MVP Delphi – Orléans) Patrick.premartin@olfsoft.com https://developpeur-pascal.fr Laurent Navarro (MVP C++ Builder & Delphi – Toulouse) ln@altidev.com http://www.altidev.com Grégory Bersegeay (MVP Delphi – Niort ) gregory.bersegeay@gbesoft.fr http://www.gbesoft.fr