Les premiers pas
Au coeur d'Alcinoe se trouve la conviction de permettre aux développeurs de créer des applications rapides, modernes et fluides, sans les goulots d'étranglement habituels liés à la complexité ou aux limitations de performance. Nous pensons que le développement doit être axé sur l'innovation, et non sur les contraintes de vos outils. Alcinoe est conçu selon la philosophie selon laquelle chaque développeur mérite les meilleures performances, la liberté de personnalisation et la possibilité d'offrir des expériences utilisateur exceptionnelles sur toutes les plateformes, tout en préservant son indépendance face à la domination des GAFA (Google, Apple, Facebook, Amazon).
Alcinoe est entièrement compatible avec Delphi Athens 12.3.
Installer Alcinoe
Pour configurer Alcinoe, commencez par exécuter le script CompileAll.bat. Ce fichier de traitement par lots effectue une série de tâches, notamment la récupération et la mise à jour du code source Delphi original, le téléchargement des bibliothèques iOS/Android nécessaires, la génération des fichiers JAR Alcinoe, la construction de la BPL (Borland Package Library), la compilation des outils du répertoire Tools et enfin la compilation de toutes les démos du répertoire Demos. Veuillez noter que certaines démos nécessitent des composantes de devexpress.
Si vous n'avez besoin que des composantes non visuels d'Alcinoe, aucune étape supplémentaire n'est nécessaire. Assurez-vous simplement que le fichier Source est inclus dans le chemin de recherche de votre projet.
Pour utiliser les composantes visuelles d'Alcinoe lors de la conception, vous devez installer la BPL. Ouvrez Delphi, allez dans Component > Install Packages..., puis sélectionnez la BPL dans Libraries\bpl\Alcinoe. De plus, incluez le fichier Source et tous les sous-répertoires d'Embarcadero\Athens dans votre chemin de recherche.
Mise à jour d'Alcinoe
Il peut arriver que les développeurs du projets Alcinoe ait besoin de renommer des unités, des classes et des fonctions dans Alcinoe. Pour nous aider à mettre à jour automatiquement ces noms dans nos projets et à rester en phase avec la dernière version d'Alcinoe, ils proposons un outil appelé CodeRenaming.
À propos de Skia
Skia est une bibliothèque graphique 2D open source alimentant le moteur graphique utilisé par Flutter et le système d'exploitation Android. L'implémentation de Skia dans Delphi a marqué une avancée significative pour le cadre d'application FireMonkey, car elle surpasse largement l'ancien moteur graphique Delphi TCanvasGPU sur presque tous les plans.
Principaux avantages de Skia :
- Base graphique solide : Skia étant le même moteur graphique que Flutter, les applications créées avec Flutter ou Delphi + Skia partagent la même technologie graphique fondamentale.
- Performances : Les algorithmes de Skia sont optimisés au point de pouvoir souvent s'afficher directement sur la surface du formulaire sans nécessiter de tampon interne.
- Cohérence multiplateforme : Skia offre un moteur graphique cohérent sur toutes les plateformes (Windows, iOS, macOS, Android).
- Fonctionnalités riches : Skia offre des fonctionnalités puissantes typiques d'un moteur graphique robuste, notamment la mise en forme avancée du texte et le rendu des ombres.
Inconvénients de Skia :
- Taille du paquet augmentée : L'ajout de Skia augmente la taille du paquet d'environ 25 Mo.
- Dépendance à Google : Skia est un produit Google, et bien qu'Embarcadero se soit traditionnellement attaché à proposer un produit indépendant et exempt de toute domination des GAFA, son utilisation introduit une dépendance à la technologie de Google.
- Limitations d'OpenGL : Sous OpenGL, seules les images matricielles (CPU) peuvent être partagées entre différents processus légers. Cela signifie que les textures GPU ne peuvent pas être créées dans les processus légers d'arrière-plan, puis dessinées sur la surface principale du formulaire. Il est intéressant de noter qu'il ne semble pas y avoir d'amélioration notable de la vitesse de dessin des images GPU par rapport aux images matricielles.
- Performances de rendu des images : Bien que Skia excelle dans le dessin de formes directement sur la surface du formulaire, il est nettement plus lent (4 fois plus lent) que l'ancien canevas Delphi (TCanvasGPU) pour le rendu des images sur le formulaire.
Problèmes de performances avec Skia
Le rendu d'image plus lent est particulièrement problématique dans les scénarios où nous peignons d'abord tout sur un tampon interne, puis affichons ce tampon sur la surface du formulaire à chaque boucle de dessin - une technique souvent utilisée pour éviter le scintillement et améliorer les performances. Malheureusement, Skia peut être jusqu'à 4 fois plus lent à afficher des images sur la surface du formulaire que l'ancien Delphi TCanvasGPU, utilisant des textures OpenGL.
Par exemple, sur un Google Pixel 7, on peut afficher 2 000 textures simultanément à 90 ips avec TCanvasGPU. Cependant, avec Skia, on ne peux afficher que 500 images à la même fréquence d'images. Vous pouvez le vérifier avec l'application de démonstration disponible sur Demos/ALFmxGraphics.
L'approche choisie
Compte tenu de ces limitations, les développeurs on décidé d'utiliser Skia comme moteur graphique back-end dans Alcinoe, tout en continuant d'utiliser l'ancien Delphi Canvas (TCanvasGPU) pour le rendu sur la surface principale du formulaire. L'exception concerne Windows, où nous utilisons Skia à la fois pour le back-end et pour la surface principale du formulaire.
Considérations spécifiques à la plateforme
Sur Android et iOS, les systèmes d'exploitation proposent déjà des API graphiques puissantes, et dans de nombreux cas, ces API natives surpassent Skia, souvent jusqu'à deux fois plus. Bien que les performances des API graphiques du système d'exploitation soient supérieures, Skia offre toujours l'avantage d'un moteur graphique unifié sur toutes les plateformes, ainsi que des fonctionnalités supplémentaires telles que des images animées.
Contrôles Material 3 pour Delphi : une approche d'interface utilisateur moderne
Ces dernières années, Material Design s'est imposé comme un langage de conception incontournable pour les développeurs créant des applications modernes, conviviales et visuellement attrayantes. Avec Material You (Material Design 3), Google va encore plus loin en permettant une personnalisation accrue et une apparence plus dynamique. Les développeurs utilisant Delphi peuvent désormais exploiter les principes de Material 3 pour créer des interfaces époustouflantes et cohérentes sur des plateformes comme Android, iOS, Windows et macOS.
Contrôles clefs d'Alcinoe pour Material 3
1. TALButton : TALButton offre une personnalisation complète pour les états tels que Activé, Enfoncé et Désactivé, permettant ainsi des styles de boutons Material 3 modernes. Vous pouvez ajuster des propriétés comme le remplissage, la bordure, l'ombre et la police de caractères pour correspondre aux principes de conception clairs et audacieux de Material 3. Il prend en charge le contenu HTML, ce qui vous permet d'inclure facilement des icônes ou du texte enrichi.
2. TALCheckBox et TALRadioButton : Ces deux contrôles s'inspirent du design minimaliste et réactif de Material 3. Ils incluent des propriétés personnalisables pour la coche, la bordure et l'ombre, et offrent des transitions fluides entre les états. Leur haute personnalisation vous permet de créer des cases à cocher et des boutons radio en harmonie avec l'esthétique de Material 3.
4. TALSwitch : TALSwitch est conçu pour une personnalisation facile, vous permettant de contrôler le design du commutateur dans des états tels que Activé, Survolé, Focusé, Enfoncé et Désactivé. Le contrôle offre des transitions fluides et réactives entre les états activé et désactivé, reflétant la fluidité et l'adaptabilité des commutateurs de Material 3. Sa conception personnalisable permet à TALSwitch de s'intégrer parfaitement à une interface moderne et minimaliste, offrant à la fois un attrait visuel et des performances optimisées pour les applications Delphi.
3. TALTrackBar et TALRangeTrackBar : TALTrackBar offre une personnalisation complète de son apparence et de son comportement, ce qui en fait un choix idéal pour implémenter le design épuré et moderne des curseurs de Material 3. Vous pouvez facilement personnaliser le rail et le curseur avec des propriétés telles que le remplissage, le contour et l'ombre pour obtenir l'aspect épuré et minimaliste qui caractérise Material 3. Les interactions du curseur, y compris les indicateurs de valeur et d'arrêt, sont fluides, garantissant un retour réactif lorsque l'utilisateur interagit avec le contrôle. Ses transitions entre les états (Activé, Focusé et Enfoncé) contribuent à une expérience utilisateur fluide et soignée.
4. TALEdit et TALMemo : Les commandes natives TALEdit et TALMemo d'Alcinoe sont conçues pour s'adapter aux champs de saisie de Material 3 et offrent des bordures, des ombres et des polices de caractères personnalisables. Ces commandes s'adaptent à toutes les plateformes tout en conservant une interface de saisie de texte cohérente et claire, avec des fonctionnalités telles que le dimensionnement automatique et le texte d'invite.
Pourquoi Alcinoe pour Material 3 ?
Si Material 3 privilégie une conception réactive et adaptative, les performances sont tout aussi importantes. Le rendu à double tampon d'Alcinoe garantit la rapidité et la fluidité de vos contrôles, même lors d'interactions complexes avec l'interface utilisateur, comme le défilement. Ce gain de performances s'inscrit parfaitement dans l'objectif de Material 3 : des interfaces utilisateur fluides et réactives.
Intégrer Alcinoe à vos projets Delphi vous permet de créer des applications modernes et performantes, avec une interface Material 3 soignée, sans compromis sur la vitesse ni la compatibilité multiplateforme.
Contrôle de texte hautes performances avec formatage HTML et fonctionnalités interactives
TALText est une composante robuste, similaire à TText, mais doté de fonctionnalités avancées, comme la prise en charge du formatage HTML de base. Malgré l'intégration du formatage HTML, TALText offre des performances nettement supérieures à celles de TText. Ceci est rendu possible grâce à son moteur à double tampon, affichant le texte dans un tampon interne, puis affiche uniquement ce tampon dans le formulaire à chaque cycle de dessin. Cette conception garantit à TALText une rapidité et une efficacité exceptionnelles. De plus, TALText améliore ses fonctionnalités grâce à la prise en charge de la gestion des événements de souris, lui permettant de détecter des éléments HTML spécifiques (tels que les identifiants et les limites d'intervalle) sous le pointeur. Cette fonctionnalité permet d'activer des éléments de texte interactifs, ce qui le rend idéal pour les applications nécessitant un comportement de texte dynamique et réactif.
TALPageController - Le maître des transitions de pages
TALPageController est une composante gérant et contrôlant les transitions de pages au sein de votre application, à l'instar du PageController de Flutter. Il vous permet de naviguer facilement entre les pages, de suivre l'index de la page courante et de personnaliser le comportement des animations de défilement et des transitions.
TALPageIndicator - Navigateur multipage animé
Les indicateurs de page sont un élément clef des applications multipages. Ils offrent aux utilisateurs une vision claire de leur emplacement actuel et du nombre total de pages. TALPageIndicator est une composante léger proposant des indicateurs de page animés et personnalisables, avec divers effets. Son intégration est simple et garantit des transitions fluides et visuellement attrayantes dans votre interface. Il intègre un ensemble d'effets pour animer le point actif, chacun personnalisable selon vos préférences.
Lecteur vidéo pour FireMonkey
ALVideoPlayer restitue la vidéo sur une texture, permettant une intégration transparente dans un formulaire Delphi tout en prenant en charge l'ordre Z, permettant ainsi de placer des contrôles au-dessus de la vidéo. En revanche, les lecteurs vidéo officiels de Delphi sont des fenêtres de lecture vidéo natives superposées au formulaire, ne prenant pas en charge l'ordre Z.
Sur Android, Alcinoe utilise Media3 ExoPlayer, offrant des fonctionnalités avancées telles que le streaming adaptatif dynamique sur HTTP (DASH), HLS, SmoothStreaming et le chiffrement standard, fonctionnalités non disponibles dans MediaPlayer. Media3 ExoPlayer est également conçu pour être facilement personnalisable et extensible. Sur iOS, c'est AVPlayer étant utilisé, offrant une prise en charge HLS similaire à celle de Media3 ExoPlayer.
WebRTC Delphi Wrapper
WebRTC (Web Real-Time Communications) est une technologie permettant aux applications et sites web de capturer et de diffuser des fichiers audio et/ou vidéo, ainsi que d'échanger des données arbitraires entre navigateurs et applications mobiles sans intermédiaire. L'ensemble des normes derrière WebRTC permet le partage de données et la téléconférence en peer-to-peer sans plugiciel ni logiciels tiers.
Delphi WebRTC Wrapper
Grâce au composante TALWebRTC, vous pouvez facilement intégrer le clavardage vidéo et audio à vos applications, offrant ainsi aux utilisateurs une expérience plus interactive et immersive.
Animation de chute de confettis
ALConfetti est une bibliothèque Delphi légère et très performante, conçue pour créer des animations de chute de confettis visuellement attrayantes et personnalisables. Conçu pour la performance et la flexibilité, il permet aux développeurs d'ajuster facilement des paramètres tels que la vitesse, la taille et la couleur, garantissant ainsi une intégration fluide à tout projet. Qu'il s'agisse de célébrations, d'avertissements ou d'effets visuels dynamiques, ALConfetti offre une expérience d'animation fluide et performante.
AndroidMerger : Intégration du SDK AAR dans l'application Android FMX
Une bibliothèque Android, également appelée «Archive Android» (AAR), contient tout le nécessaire pour créer une application, y compris les fichiers sources, les fichiers de ressources et le manifeste. Contrairement aux fichiers JAR, les AAR peuvent inclure des fichiers de ressources en plus du bytecode compilé.
L'intégration d'une AAR dans un projet Delphi peut être un processus long et complexe, impliquant l'extraction des ressources, leur ajout manuel aux fichiers de déploiement Delphi, la compilation de la classe R.java, la vérification des dépendances,...
Avec AndroidMerger, tout ce processus est automatisé en une seule ligne de commande. En résumé, AndroidMerger :
- Utiliser Gradle ou une implémentation interne pour répertorier toutes les dépendances. Téléchargez les bibliothèques et les dépendances depuis les dépôts Maven locaux ou centraux.
- Fusionnez les ressources de tous les AAR dans un seul répertoire.
- Combinez les fichiers AndroidManifest de tous les AAR dans AndroidManifest.template.xml.
- Fusionnez google-services.json avec les ressources du projet.
- Créez le fichier R.jar avec tous les identifiants de ressources à l'aide d'aapt ou d'aapt2.
- Mettez à jour le fichier projet (.dproj) pour inclure toutes les ressources.
- Générez le fichier de pont natif Delphi à partir des bibliothèques Java.
DeployMan / DeployProjNormalizer / DProjNormalizer
- DeployMan simplifie le déploiement de fichiers et de dossiers pour les applications iOS et Android, ce qui le rend idéal pour la gestion de fichiers volumineux tels que les SDK tiers.
- DeployProjNormalizer permet de créer un nouveau fichier deployproj de A à Z en utilisant le fichier dproj comme référence, puis de le normaliser en ordonnant les noeuds afin de faciliter la comparaison entre les différentes révisions avec les outils de comparaison.
- DProjNormalizer se concentre sur l'ordonnancement des nouds dans un fichier DProj, garantissant ainsi la cohérence entre les commits et simplifiant la comparaison des modifications.
Alcinoe Code Profiler
Alcinoe Code Profiler est un puissant profileur d'instrumentation de code source pour Delphi, conçu pour aider les développeurs à identifier les goulots d'étranglement et à optimiser leurs applications sur plusieurs plateformes, notamment Windows, macOS, iOS et Android.
En injectant automatiquement des marqueurs de performance dans votre code source Delphi, Alcinoe Code Profiler enregistre les temps d'exécution de chaque appel de procédure. Ces journaux peuvent ensuite être analysés via l'interface graphique fournie, vous permettant d'identifier les inefficacités et d'améliorer les performances de vos applications avec précision.
Avec Alcinoe Code Profiler, vous pouvez :
- Détecter les goulots d'étranglement avec un minimum d'effort;
- Optimiser les chemins de code critiques pour une meilleure efficacité;
- Profiler vos applications de manière fluide sur toutes les principales plateformes;
- Visualiser les données d'exécution dans un outil d'analyse intuitif.
Animation interpolée
La composante TALAnimation est une version améliorée de l'objet TAnimation de Delphi, spécifiquement optimisé pour les plateformes mobiles. Au lieu de s'appuyer sur le mécanisme traditionnel de minuterie, ce composant adopte des technologies spécifiques à chaque plateforme, offrant une expérience d'animation considérablement améliorée aux utilisateurs mobiles.
Sur Android, les animations sont parfaitement intégrées au Chorégraphe, garantissant une synchronisation parfaite avec la fréquence de rafraîchissement de l'appareil.
Sur iOS, la précision de DisplayLink est exploitée, offrant un rendu d'animation fluide et optimisé.
L'une des principales améliorations de TALAnimation réside dans la prise en charge d'algorithmes d'interpolation personnalisés, offrant aux développeurs la flexibilité nécessaire pour créer des motifs d'animation uniques et complexes, bien au-delà des séquences d'entrée et de sortie progressives traditionnelles.
Animation SpringForce
Inspiré de SpringForce d'Android, la composante TALSpringForceAnimation transfère la dynamique des animations physiques à la plateforme Delphi. Cette composante simule le comportement réel d'objets influencés par la mécanique des ressorts, produisant des animations s'étirant, rebondissent et se stabilisent, reflétant le monde physique.
Les développeurs peuvent affiner diverses propriétés physiques du ressort, telles que la rigidité et le taux d'amortissement, offrant ainsi une large gamme de comportements d'animation. Cette flexibilité permet de créer des animations adaptées aux spécificités de chaque application, offrant une expérience utilisateur plus réaliste et plus attrayante. Cette version améliore la fluidité et la clarté de la description tout en conservant le formatage Markdown.
Moteur de défilement
TALOverScroller et TALVelocityTracker sont des composantes clefs de TALScrollEngine, améliorant les interactions avec l'interface utilisateur. TALOverScroller gère le défilement et le déplacement avec une décélération fluide lorsque l'utilisateur dépasse le bord de la vue, tandis que TALVelocityTracker mesure la vitesse du toucher pour déterminer la vitesse et la direction des gestes. Ensemble, ils offrent des animations fluides et un retour intuitif au moteur de défilement.
Plutôt que de réinventer la roue, nous avons basé TALScrollEngine sur des composantes Android éprouvés, en transférant VelocityTracker et OverScroller de Java et C++ vers Delphi. Cela garantit une expérience de défilement fiable et de haute qualité aux développeurs Delphi, grâce à des technologies fiables et performantes.
Firebase Cloud Messaging
L'implémentation Delphi de la dernière version de Firebase Cloud Messaging (FCM) utilisant le protocole HTTP V1 permet d'envoyer des avertissements push avancées, notamment des médias enrichis comme des images, aux appareils Android et iOS. Les développeurs peuvent ainsi diffuser des alertes, des mises à jour et des avertissements personnalisées en temps réel directement aux utilisateurs mobiles, améliorant ainsi l'engagement et la communication au sein de leurs applications.
Géolocalisation pour Android et iOS
La composante TALGeoLocationSensor est une composante Delphi donnant accès aux services de localisation sur les appareils iOS et Android. Il permet aux développeurs de récupérer la position actuelle de l'appareil et de recevoir des mises à jour en cas de changement. Ce composant prend en charge différents fournisseurs de localisation, notamment le GPS, la triangulation du réseau cellulaire et le positionnement Wi-Fi.
Outre l'accès aux services de localisation, TALGeoLocationSensor automatise le processus de demande d'autorisation utilisateur pour l'utilisation des données de localisation sur iOS et Android. Il gère également les cas où les utilisateurs ont précédemment refusé l'accès à la localisation. Grâce à ce composant, les développeurs peuvent intégrer facilement des fonctionnalités de localisation à leurs applications sans avoir à gérer les détails d'implémentation sous-jacents.
Jeton d'accès Google OAuth 2.0
Les API Google utilisent le protocole OAuth 2.0 pour l'authentification et l'autorisation. La fonction ALGenerateGoogleOAuth2AccessToken vous permet de générer facilement un jeton d'accès OAuth 2.0, permettant d'accéder en toute sécurité aux services et API Google dans vos applications Delphi.
Connexion au SDK VKontakte/Facebook pour Android/iOS
Le SDK VKontakte/Facebook pour Android et iOS permet aux utilisateurs de se connecter à votre application avec leurs identifiants VKontakte ou Facebook. Une fois connectés, ils peuvent accorder des autorisations à votre application, vous permettant ainsi de récupérer des informations ou d'effectuer des actions sur VKontakte/Facebook en leur nom.
Filtres d'édition photo pour Android/iOS
Avec TALColorAdjustEffect, appliquez facilement de superbes filtres photo pour sublimer vos images d'un simple geste. Transformez vos photos en oeuvres d'art magnifiques et expressives en quelques minutes !
Analyseur JSON
TALJSONDocument est un analyseur et rédacteur Delphi pour les formats de données JSON et BSON. Il prend en charge les analyseurs DOM et SAX (bien qu'un nom plus approprié pour SAX soit SAJ (Simple API for JSON) plutôt que Simple API for XML, la terminologie SAX étant conservée).
Outre ses fonctionnalités JSON, TALJSONDocument prend également en charge le format BSON, utilisant une syntaxe similaire à TALXMLDocument/TXMLDocument. Il peut également exporter des données JSON/BSON vers TALStringList, ce qui en fait un outil flexible pour l'analyse et la manipulation de données dans les applications Delphi.
Exemple :
- {
- _id: 1, // commentaires
- name: { first: "John", last: "Backus" },
- birth: new Date('1999-10-21T21:04:54.234Z'),
- contribs: [ "Fortran", "ALGOL", "Forme Backus-Naur", "FP" ],
- awards: [
- { award: "Médaille nationale des sciences",
- year: 1975,
- by: "Fondation nationale des sciences" },
- { award: "Prix Turing",
- year: 1977,
- by: "ACM" }
- ],
- spouse: "",
- address: {},
- phones: []
- }
Pour accéder aux noeuds du document :
- MyJsonDoc.GetChildNodeValueInt32('_id', 0{par défaut si le noeud n'existe pas});
- MyJsonDoc.GetChildNodeValueText(['name','first'], ''{par défaut si le noeud n'existe pas});
- MyJsonDoc.GetChildNodeValueDateTime('birth', Now{par défaut si le noeud n'existe pas});
Enveloppe ImageMagick pour Delphi
Utilisez ImageMagick pour créer, modifier, composer ou convertir des images bitmap. Il prend en charge plus de 200 formats d'image, dont PNG, JPEG, GIF, HEIC, TIFF, DPX, EXR, WebP, Postscript, PDF et SVG.
Avec ImageMagick, vous pouvez redimensionner, retourner, refléter, faire pivoter, déformer, rogner et transformer des images. De plus, il permet d'ajuster les couleurs, d'appliquer divers effets spéciaux et de dessiner du texte, des lignes, des polygones, des ellipses et des courbes de Bézier. Cet outil puissant permet un large éventail de manipulations d'images dans les projets Delphi.
Exemple :
- { Créer la bibliothèque ImageMagick }
- ALCreateImageMagickLibrary({alcinoe} + '\Libraries\dll\imagemagick\win32\imagemagick', min(2, System.CPUCount){aThreadLimit});
- Try
-
- { créer le pointeur de baguette }
- Var LWand := ALImageMagickLib.NewMagickWand;
- Try
-
- { charger l'image }
- if ALImageMagickLib.MagickReadImage(LWand, pansiChar(aInputFilename)) <> MagickTrue then RaiseLastMagickWandError(LWand);
-
- { Définir la qualité de compression }
- if ALImageMagickLib.MagickSetImageCompressionQuality(LWand,80) <> MagickTrue then RaiseLastMagickWandError(LWand);
-
- { automatiser l'image }
- if ALImageMagickLib.MagickAutoOrientImage(LWand) <> MagickTrue then RaiseLastMagickWandError(LWand);
-
- { Redimensionner l'image à l'aide du filtre Lanczos }
- if ALImageMagickLib.MagickResizeImage(LWand, 640, 480, LanczosFilter) <> MagickTrue then RaiseLastMagickWandError(LWand);
-
- { enregistrer l'image }
- ALImageMagickLib.MagickWriteImage(LWand, pansiChar(aOutputFilename));
-
- Finally
- ALImageMagickLib.DestroyMagickWand(LWand);
- End;
-
- Finally
- ALFreeImageMagickLibrary;
- End;
Simplifier l'initialisation des objets avec TALInit
Dans l'évolution constante du développement logiciel, ils ont cherché souvent des moyens de réduire le code standard et d'améliorer la maintenabilité des projets. L'initialisation des champs de classe peut s'avérer fastidieuse, notamment en raison de la complexité du code standard. La méthode traditionnelle consiste à définir explicitement la valeur de chaque champ dans le constructeur, ce qui peut s'avérer fastidieux, surtout pour les classes comportant de nombreux champs. TALInit est une fonctionnalité permettant l'initialisation automatique des champs d'objet en fonction de leurs attributs.
La méthode traditionnelle
En général, les développeurs initialisent manuellement les champs d'objet dans le constructeur. Prenons l'exemple de la classe suivante :
- TAutoInitObject=Class(TObject)
- Public
- CharValue:Char;
- ChildObject:TChildObject;
- public
- Constructor Create;Virtual;
- Destructor Destroy;Override;
- End;
Ici, chaque champ est initialisé dans le constructeur Create :
- Constructor TAutoInitObject.create(Const aOwner:Tform1; Const AAutoInit:Boolean);Begin
- CharValue:='A';
- ChildObject:=TChildObject.create;
- ChildObject.Name:='AnObject';
- ChildObject.Value:=12.2;
- End;
-
- Destructor TAutoInitObject.Destroy;Begin
- ALFreeandNil(ChildObject);
- Inherited;
- End;
Bien que cette méthode offre un contrôle précis, elle peut s'avérer fastidieuse pour les grandes classes comportant de nombreux champs.
La méthode TALInit
Imaginez un mécanisme qui non seulement automatise cela, mais soit aussi rapide que la méthode traditionnelle ! Oui, vous avez bien lu. TALInit réalise cet exploit remarquable :
Grâce à l'utilisation d'attributs personnalisés, chaque champ de l'objet peut être initialisé automatiquement en fonction de son attribut correspondant. Il n'est donc plus nécessaire de définir manuellement chaque champ dans le constructeur. L'extrait ci-dessus illustre à quel point l'initialisation des champs d'objet peut être concise et lisible avec TALInit.
Performances : une révolution
L'un des principaux avantages de TALInit réside dans ses performances. L'automatisation soulève naturellement la préoccupation de la surcharge qu'elle peut engendrer. Cependant, TALInit est conçu pour être aussi efficace que la méthode traditionnelle d'initialisation des champs. Les développeurs peuvent ainsi profiter de cette simplicité sans se soucier des coûts cachés liés au temps d'exécution.
Client MongoDB
Il s'agit d'un pilote Delphi avec un bassin de connexions permettant d'accéder à un serveur MongoDB. Le bassin de connexions consiste en un cache de connexions à la base de données, conservé en vue de leur réutilisation, réduisant ainsi la nécessité d'établir une nouvelle connexion pour chaque requête. Une fois créée, une connexion est placée dans le pool et peut être réutilisée pour de futures requêtes.
Si toutes les connexions du bassin sont utilisées, une nouvelle connexion est créée et ajoutée au bassin. Cette approche réduit le temps nécessaire à l'établissement des connexions, améliorant ainsi les performances et l'efficacité des interactions avec la base de données MongoDB.
Client WebSocket
Le client WebSocket pour Delphi repose sur WinHTTP et fournit un protocole de communication bidirectionnel et interactif entre le navigateur d'un utilisateur et un serveur. Il permet d'envoyer des messages à un serveur et de recevoir des réponses événementielles sans interrogation constante.
Avec WebSocket, la communication en temps réel est simplifiée, ce qui le rend idéal pour les applications nécessitant un échange de données continu et à faible latence entre le client et le serveur.
TStringList rapide
TALStringList fonctionne de manière similaire à TStringList de Delphi, mais avec des performances nettement améliorées. Une fois la liste triée, un algorithme de tri rapide recherche les paires nom=valeur, ce qui accélère considérablement les recherches.
De plus, TALStringList utilise un algorithme de tri indépendant des paramètres régionaux, basé sur la valeur ordinale 8 bits de chaque caractère, plutôt que les algorithmes AnsiCompareText et AnsiCompareStr de Delphi. Le tri est ainsi jusqu'à 10 fois plus rapide que celui de TStringList de Delphi.
Contrairement à TStringList, TALStringList n'est pas basé sur Unicode, mais est une liste de chaînes entièrement Ansi, optimisée pour les performances.
Exécuteur PHP
ALPHPRunnerEngine est une composante simple mais puissant vous permettant d'utiliser PHP (toutes versions) comme langage de script dans vos applications Delphi. Avec ALPHPRunnerEngine, vous pouvez exécuter des scripts PHP directement dans votre programme Delphi, sans serveur Web.
Cette composante utilise l'interface CGI/FastCGI (via php-cgi.exe) pour communiquer avec le moteur PHP, facilitant ainsi l'intégration de fonctionnalités PHP dans les projets Delphi.
Client Memcached
Qu'est-ce que Memcached ? Memcached est un système de mise en cache d'objets en mémoire distribuée, gratuit et open source, hautes performances. Bien que générique par nature, il est principalement utilisé pour accélérer les applications web dynamiques en réduisant la charge des bases de données. En mettant en cache les données fréquemment consultées en mémoire, Memcached améliore les performances et l'évolutivité des applications.
Composante GSM
La composante TAlGSMCom permet l'envoi de SMS via l'interface en mode texte définie dans la spécification technique GSM 07.05. Ce composant facilite l'intégration des fonctionnalités SMS dans vos applications, conformément aux protocoles standard utilisés sur les réseaux GSM.
Client SQLite3
Le client SQLite3 pour Delphi vous permet d'interroger une base de données SQLite3 et de récupérer les résultats dans plusieurs formats, notamment XML, JSON et BSON. Cette flexibilité le rend idéal pour les applications nécessitant l'échange de données dans différents formats, permettant une intégration fluide avec divers systèmes et API.
Et bien plus encore
- CGI Runner
- Client HTTP (WinInet/WinHTTP)
- Client MySQL
- Client NNTP
- Client POP3
- Client SMTP
- Analyseur XML
- ...
DELPHI D2009+ (UNICODE)
Unicode était sans aucun doute nécessaire pour un produit comme Delphi. Cependant, l'approche choisie par Embarcadero pour son implémentation a suscité quelques inquiétudes. Au lieu d'adopter UTF-8 via des chaînes de caractères 8 bits, ils ont opté pour une migration des chaînes 8 bits vers des chaînes 16 bits (UTF-16). Cette décision a compliqué la migration des applications Delphi avant D2009, en particulier pour celles qui partaient du principe que les chaînes de caractères étaient 8 bits.
Depuis D2009, AnsiString possède désormais une page de codes. Une translittération se produit lors de l'affectation d'une AnsiString avec une page de codes à une autre AnsiString avec une page de codes différente (par exemple, OldCodePage => UTF-16 => NewCodePage). Pour éviter toute translittération indésirable, il est essentiel de définir la page de codes du projet sur celle souhaitée (par exemple, 65001 pour UTF-8) et d'appeler SetMultiByteConversionCodePage(CP_UTF8) au début du programme.
De plus, évitez de mélanger différents types de chaînes (par exemple, UTF8String et AnsiString), même si elles partagent la même page de codes. Le compilateur Delphi ne le reconnaît pas à la compilation et effectuera des translittérations inutiles (par exemple, MyAnsiStringUTF8 := MyUTF8String donne UTF-8 => UTF-16 => UTF-8).
Pour minimiser ces problèmes, il est préférable d'utiliser exclusivement AnsiString dans votre code, même lors de la gestion de contenu UTF-8. Assurez-vous toujours qu'AnsiString est associé à SetMultiByteConversionCodePage(CP_UTF8) pour éviter les conversions indésirables.