2016-06-27 4 views
-1

Я просто программирую некоторые функции, касающиеся сортировки файлов в каталоге Windows (окна 7).
время тестирования я обнаружил, что если у вас есть два файла:сортировка файлов окон в каталоге

a3s.txt
as.txt

Windows, не ставит «as.txt» на первое место, хотя «-» имеет код ASCII 45 и «3» имеет код ASCII 51.

Это происходит только в проводнике Windows, это не происходит в командной оболочке Windows.

Почему это?

спасибо заранее

EDIT:
Это не дублирует вопрос.
В других сообщениях они рассказывают о ситуациях, когда имена файлов содержат номера. Но здесь проблема также возникает, когда у вас есть «a_s.txt» и «a-s.txt». Кроме того, проблема возникает не только в Windows 7, но и в Windows Server 2003.

+0

Тот же ответ. Проводник использует не-lexicographic сортировку, которая считается более понятной для пользователей. Это затрагивает не только цифры, но и символы. Мне очень непонятно, что такое *** *** *** вопрос. Это похоже на вопрос об использовании Проводника Windows, который был бы вне темы здесь. –

ответ

1

Это по дизайну. MSFT использует собственный алгоритм сортировки в проводнике Windows, который, по их мнению, более интуитивен для большинства пользователей. Для получения дополнительной информации и краткой истории см. this TechNet article. В статье описывается, что обычай сортировка начала с Windows XP, который был предшественником Server 2003.

«Это не является дубликатом вопроса»

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

+2

Это может быть пользовательский алгоритм, но он не является проприетарным или уникальным для Explorer. Explorer вызывает функцию ['StrCmpLogicalW'] (https://msdn.microsoft.com/en-us/library/bb759947.aspx), а также ваше приложение. Подобные флаги существуют для функции CompareStringEx, которая имеет более предсказуемое поведение и может быть использована в нескольких версиях. –

Смежные вопросы