Bonjour.
Je viens de migrer une appli avec plein de classes de type TObjectList (unité Contnrs) vers TObjectDictionary<integer, TMyObject> (unité Generics.Collections)
Je ne regrette pas cette migration sur le plan des performances, un traitement récursif avec 5000 objets qui durait 1m30 s'exécute maintenant en 2s mais...
1) Problème numéro 1 : je me retrouve avec plein de conseils et warnings sur ces deux unités generics (qui me font dire que mon code n'est pas parfait mais les références ne sont pas sur mes unités).
Le fichier generic.dictionaries.inc n'est pas accessible bien que j'aie vérifié qu'il se trouve à plusieurs endroits dans les répertoires liés au package
2) Problème numéro 2. Dans quelques rares cas, j'ai besoin de trier une liste.
J'utilise donc à la place d'un TObjectDictionary un un TList<TObject> et je souhaite trier cette liste selon une propriété de l'objet
Avant, pour les tList, il suffisait de faire quelque chose de ce type : self.Sort(@ComparePtrPropriété); avec (de façon schématique)
On trouve quantité d'exemples sur le net avec cette ancienne formulation mais pas d'exemples simples avec les TList de cette unité Generics, donc si quelqu'un a eu à faire la même chose, je suis preneur d'un exemple !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 function ComparePtrPropriété(Objet1, Objet2 : Pointer) : integer; begin if tObjet(Objet1).Propriété<tObjet(Objet2).Propriété then result := -1 else if tObjet(Objet1).Propriété>tObjet(Objet2).Propriété then result := 1 else result := 0







Répondre avec citation



Partager