Сортировка строк, содержащих числа, в удобной для пользователя форме

Привыкнув к стандартному способу сортировки строк, я удивился, когда заметил, что Windows сортирует файлы по их именам в некотором продвинутом виде. Позволь мне привести пример:

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

Я думаю, что эти имена сравниваются (при сортировке) по буквам и числам отдельно.

С другой стороны, следующий список тот же самый, отсортированный стандартным способом:
Track1.mp3
Track10.mp3
Track2.mp3
Track20.mp3

Я хотел бы создать алгоритм сравнения в Delphi, который позволил бы мне сортировать строки таким же образом. Сначала я подумал, что будет достаточно сравнить последовательные символы двух строк, пока они являются буквами. Когда в некоторой позиции обеих строк будет найдена цифра, я прочитаю все цифры, следующие за ними, чтобы сформировать число, а затем сравню числа.

Для примера приведу сравнение «Track10». и & quot; Track2 & quot; Строки таким образом:
1) читать символы, когда они равны и когда они являются буквами: & quot; Track & quot ;, & quot; Track & quot;
2) если найдена цифра, прочитайте все следующие цифры: «10», «2»;
2a) если они равны, переходите к 1 или закончите
Десять больше двух, так что "Track10" больше, чем "Track2"

Казалось, что все будет в порядке, пока я не заметил во время моих тестов, что Windows считает "Track010" ниже, чем "Track10", хотя я думал, что первый был больше, поскольку он был длиннее (не говоря уже о том, что в соответствии с моим алгоритмом обе строки будут равны, что неправильно).

Не могли бы вы дать мне идею, как именно Windows сортирует файлы по именам, или, может быть, у вас есть готовый алгоритм (на любом языке программирования), на котором я мог бы основываться?

Большое спасибо!
Мариуш

Ответы на вопрос(3)

Ваш ответ на вопрос