Comparer et sortinger les noms de fichiers Unicode

Utilisation des composants Delphi 2007 et TMS pour les utilitaires Unicode et l’interface (la mise à niveau vers Delphi 2009 pour le support Unicode n’est pas une option).

Je stocke une liste de noms de fichiers dans une liste de chaînes (TTntSsortingngList). Il est sortingé et insensible à la casse. La routine de sorting par défaut utilise CompareSsortingngW (LOCALE_USER_DEFAULT, NORM_IGNORECASE, …) pour comparer les chaînes (et la même chose pour Find). Cependant, c’est un problème car cela assimilera dummyss.txt avec dummyß.txt (par exemple), mais sur NTFS, il est parfaitement légal d’avoir ces deux fichiers dans le même dossier, c’est-à-dire qu’ils sont traités comme des noms différents.

D’après ce que je comprends, sous Vista et plus récemment, la manière correcte de comparer les noms de fichiers est d’utiliser CompareSsortingngOrdinal. Est-ce correct?

Sur les systèmes pré-Vista, quelle serait la bonne façon? Je crois que cela devrait être CompareSsortingngW (LOCALE_INVARIANT, …) mais je ne suis pas tout à fait sûr.

Merci

Devis de l’article MSDN Gestion du sorting dans vos applications :

CompareSsortingngOrdinal compare deux chaînes Unicode à tester pour l’égalité binary, par opposition à l’égalité linguistique. Des exemples de telles chaînes non linguistiques sont les noms de fichiers NTFS, …

CompareSsortingngOrdinal nécessite Windows Vista ou version ultérieure.

Edit: Oui, il semble que dans Windows avant Vista, vous pouvez utiliser RtlCompareUnicodeSsortingng qui est utilisé en interne par CompareSsortingngOrdinal et qui est disponible depuis Windows NT.