Это, скорее всего, порядок, в котором файлы возвращаются вызовом API файловой системы в операционной системе.Это также может быть связано с используемой файловой системой.
Многие файловые системы не являются изначально отсортированными структурами, но клиентское программное обеспечение, используемое для их представления, скрывает этот факт путем сортировки, например, списков файлов и папок.
напримеробщая проблема с флэш-MP3-плеерами заключалась в том, что люди копировали музыкальные файлы на них и воспроизводили их не по порядку, поскольку микропрограмма просто считывала файлы в порядке их появления в таблице размещения файлов и игнорировала имена файлов (даже если они имели 01 - track name
вид имен).
Звучит так, что верно одно из следующего
- API Windows 10 сортирует имена файлов, когда возвращает их списки
- Учитывая пыл, который MS вкладывает в обратную совместимость, я не уверен, что это правда, тем более что все пользовательское программное обеспечение давно привыкло к несортированным спискам
- Ваша система Windows 10более новые, и файлы были скопированы на него свежим
- Это означает, что файлы находятся на диске в фактическом илиКогда они были скопированы, вероятно, это отсортированный порядок
- В коробке Windows 7, вероятно, были файлы в течение некоторого времени, и они записаны на диск в несортированном порядке
- . Поэтомупросто удача, что «старый» код работает в Windows 10
Так что это может объяснить «случайный» порядок сортировки.
Назадк VB6: свойство Sorted элемента управления ListBox VB6 - это то, что называется свойством «Action» - установка его делает что-то.Элемент управления не сортирует списки, пока вы их заполняете.Заполните список, ПОТОМ установите свойство .Sorted.
Новый код, вероятно, создает отсортированный список, поскольку FileSystemObject ведет себя иначе, чем Dir$()
(т. Е. Он, вероятно, сортирует файлы, потому что это было общим расстройством)
Dim DirName As String
DirName = Dir$(Path, ATTR_DIRECTORY)
Do While DirName ""
If DirName "." And DirName ".." Then
If (GetAttr(Path & DirName) And ATTR_DIRECTORY) = ATTR_DIRECTORY Then
listbox1.AddItem DirName
End If
End If
DirName = Dir$
Loop
listbox1.Sorted = True ' After the loop