6 pièce(s) jointe(s)
Une unité qui va vous simplifier la vie : TypesHelpers
Bonjour à tous,
Il y a quelque temps, pour des besoins personnels, j'ai installé Microsoft Visual Studio Community 2017
En refaisant mes premier pas sous cet EDI, j'ai remarqué une petite chose plutôt pas mal dont je ne me souvenais plus.
En C# (je ne sais plus si c'est valable en C++) pour les Type Integer, float etc., nous disposons de fonctions qui sont attachées.
Avec Lazarus et FPC ces fonctions sont limitées. Et il faut passer par le nom du type de la variable pour y avoir accès. Je vous ai fait quelques petites captures :
Pièce jointe 369972
Comme on peut le voir et je le disais, le nombre de fonctions est limité et ces fonctions ne sont pas vraiment utiles dans la pratique.
Sous Visual Studio certaine fonctions sont également attachées aux variables (en plus du type lui même) :
Pièce jointe 369976
Mais sous Lazarus, on se prend une grosse erreur :
Pièce jointe 369979
C'est alors que je me suis demandé s'il serait possible d'obtenir le même comportement avec Lazarus en utilisant des Helpers sur des types de variables comme le Char, Byte, Integer, Single, Double, String....
Et la réponse est oui ! :yaisse3: Il y a juste 2 conditions : l'unité doit être compilée en mode Delphi et il faut utiliser les même noms d'Helpers que ceux déjà définis par FPC.
Je vous propose donc une petite unité basée sur ces fameux Helpers
Les avantages sont clairs : plus besoin de se souvenir du nom de toutes les fonctions pour réaliser telle ou telle chose. Les fonctions peuvent être chainées. Résultat on code plus rapidement.
Pièce jointe 369983
J'ai réalisé une petite démo qui vous montre tout ça :
Pièce jointe 369987
J'ai testé sous Windows et Linux, tout fonctionne.
Petite information concernant les chaines de caractères String j'ai utilisé les fonctions présentes dans l'unité LazUTF8 ce qui permet de solutionner pas mal de petits problèmes liés à ce format de chaine ;)
Il manque surement encore quelques fonctions. Et il manque des "helpers" pour gérer les types Int64, Extended. Mais pour l'instant cette unité me suffit (presque) en l'état.
Je vais ajouter encore quelques fonctions et améliorer les commentaires.
Si jamais, pour vos propre besoins, rien ne vous empêche de rajouter vos propres fonctions :zoubi:
J'aimerais poster ce bout de code dans les sources Lazarus.
Mais avant, J'aurais souhaité avoir vos avis, impressions et suggestions.
Vous trouverez cette petite merveille en pièce jointe : Pièce jointe 369991
Merci d'avance pour vos tests et retours.
A+
PS : Désolé d'avance j'ai tout commenté en Anglais "basique". Si vous ne comprenez pas, un petit coup de google translate devrait faire l'affaire (je vous conseille ce petit addons pour vos navigateur, qui est très pratique)