Tri de chaînes contenant des nombres de façon conviviale

Être utilisé à la manière standard de tri de chaînes, j'ai été surpris quand j'ai remarqué que Windows trie les fichiers par leur nom dans une sorte de manière avancée. Laissez-moi vous donner un exemple:

Track1.mp3
Track2.mp3
Track10.mp3
Track20.mp3

Je pense que ces noms sont comparés (en cours de tri) sur base de lettres et de chiffres séparément.

D'autre part, la suite est de la même liste triée de manière standard:
Track1.mp3
Track10.mp3
Track2.mp3
Track20.mp3

Je voudrais créer une comparaison alogorithm en Delphi, qui permettez-moi de trier les chaînes de la même manière. Au début, je pensais qu'il suffirait de comparer les caractères consécutifs de deux chaînes tandis qu'ils sont des lettres. Quand un chiffre serait trouvé dans une position à la fois les cordes, je lisais tous les chiffres après eux pour former un nombre, puis de comparer les chiffres.

Pour vous donner un exemple, je vais comparer "Track10" et "Piste 2" les chaînes de cette façon:
1) lisez les personnages alors qu'ils sont égaux et qu'ils sont des lettres: "Piste", "Track"
2) si un chiffre est trouvé, lire tous les chiffres suivants: "10", "2"
2a) si elles sont égales, aller à 1 ou d'autre finition
Dix est plus grand que deux, donc "Track10" est supérieur à "Piste 2"

Il m'avait semblé que tout irait bien jusqu'à ce que j'ai remarqué, lors de mes essais, que Windows considéré comme "Track010" inférieur "Track10", alors que je pensais que le premier était plus que il était plus long (pas de mentionner que, selon mon algorithme à la fois les chaînes seraient égaux, ce qui est faux).

Pourriez-vous me fournir l'idée exactement comment Windows trie les fichiers par leur nom ou peut-être vous avez un prêt-à-utilisation de l'algorithme dans un langage de programmation) que je pourrais base sur?

Merci beaucoup!
Mariusz

Dupe de beaucoup d'autres questions, y compris: stackoverflow.com/questions/34518/natural-sorting-algorithm
Désolé, mais je ne savais même pas ce que l'expression à rechercher avant. C'est la raison pour laquelle j'ai dupliqué cette question involontairement. Maintenant, je sais que cette méthode de tri est appelé "tri naturel", de sorte que je peux rechercher plus d'informations à ce sujet par moi-même.
Regarde ce stackoverflow.com/questions/31538293/...
Double de stackoverflow.com/q/248603/24874 a quelques bonnes réponses)

OriginalL'auteur Mariusz Schimke | 2009-06-20