Trouver l'implémentation de la méthode de tri d'un TStringList : quel fouillis !
Bonjour à tous.
Si j'ajoute 3 items dans un TListBox : "elle", "éléphant", "voiture"
Et que je trie le ListBox, j'obtiens un ordre parfait : "éléphant", "elle", "voiture".
Ceci aussi bien sous Linux que sous Windows.
Je fais la mème chose dans un TStringList (sorted) et j'obtiens dans l'ordre : "elle", "voiture", "éléphant".
C'est à dire le même résultat qu'en utilisant la fonction UTF8CompareText qui considère bien sûr que le "é" vient après le "v".
Pourtant, TStringList est une classe dérivée de TStrings, tout comme la propriété Items d'un ListBox.
On est donc en droit de s'attendre à ce que la méthode de tri soit la même !!?
Je pars donc à la recherche de l'implémentation de la méthode, et là, quel fouillis ! Un chat n'y retrouverait pas ses petits !
TStringList n'est déclaré que dans le fichier "classesh.inc". Aucune implémentation de méthode.
De inc en inc, je ne trouve que des "widgetclass", des "registerclass" ou autres trucs du genre... :aie:
J'en déduis que Lazarus utilise les méthodes natives de l'OS. Bon, d'accord si c'est ce qu'il y a de plus performant, mais je préférerais tout de même une véritable implémentation, ne serait-ce que pour mon intérêt personnel de voir le code utilisé. Et ne serait-ce pas un gage de meilleure compatibilité entre OS ?
Donc, ma question : pourquoi la méthode de tri d'un TStringList n'est-elle pas la même que celle utilisée, par exemple, dans un ListBox ?
Merci.
Cordialement
Thierry