Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2019-07-07 19:08:05 ЛС | профиль | цитата
Sersey писал(а):
Если например 500 файлов записать как 0001.jpg до 0500.jpg, то первым в найденном списке файлов почему то будет 0500.jpg, потом 0001.jpg, 0002.jpg, 0003.jpg и.т.д, почему первым он 0500.jpg сортирует и как отсортировать по человечески?

1) У меня возникли подозрения, что народ настолько далек от реальной жизни, что даже перестал понимать, что в файловой системе файлы "лежат" в своем порядке, не имеющем никакого отношения к какой либо сортировке. Обычно - в порядке занесения в файловую систему.
Типа: мало ли какая вьюшка как и в каком порядке захочет чего показать... Файловой системе -- ПОФИГ. И должно быть пофиг.
FileSearch обращается именно к файловой системе. И чего там у тебя при этом проводник показывает - всем по барабану.
Поэтому и 500.jpg не там, где ты размечтался.

2) В Вашем случае отсортировать "по человечески" не так уж и сложно:
Add(MainForm,16510308,259,98)
{
Width=203
Height=265
link(onCreate,5323968:doEnum,[])
}
Add(Button,11319419,259,140)
{
Left=36
Top=192
Width=111
Caption="Sort"
Data=Integer(0)
link(onClick,16470224:doSortDigit,[])
}
Add(StringTable,16470224,378,112)
{
Left=14
Top=21
Width=154
Height=161
Columns=#5:файлы|
Point(doSortExtCmp)
Point(doSortDigit)
Point(ExtCmp)
}
Add(StrList,4122088,308,56)
{
Strings=#11:11-1024.jpg|11:12-1024.jpg|11:13-1024.jpg|11:14-1024.jpg|11:15-1024.jpg|11:16-1024.jpg|11:17-1024.jpg|11:18-1024.jpg|11:19-1024.jpg|10:2-1024.jpg|11:20-1024.jpg|11:21-1024.jpg|11:22-1024.jpg|11:23-1024.jpg|
}
Add(ArrayEnum,5323968,322,112)
{
link(onItem,16470224:doAdd,[])
link(Array,4122088:Array,[])
}

3) В более изощренных случаях сокрытия порядкового номера в имени файла следует использовать doSortExtCmp. Совместно с верхней точкой ExtCmp, к которой следует подключить свою схему парсинга/сравнения.
Почему это есть только в таблицах, но нету в StrList или WinList -- просто НЕ ПОМНЮ.
карма: 9

0
Редактировалось 3 раз(а), последний 2019-07-07 19:11:29