Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2013.11.24;
Скачать: [xml.tar.bz2];

Вниз

Про сортировочку   Найти похожие ветки 

 
Rouse_ ©   (2013-06-01 14:18) [0]

После вчерашнего мини ММР с украинскими коллегами, чей-то вдруг вдохновился и выдал :)
http://alexander-bagel.blogspot.ru/2013/06/windows.html


 
Eraser ©   (2013-06-01 14:22) [1]

http://msdn.microsoft.com/en-us/library/windows/desktop/bb759947(v=vs.85).aspx
оно? )


 
Rouse_ ©   (2013-06-01 14:24) [2]

Оно, только работает через одно место, собственно о чем и отписывается народ:


> Not always so logical
> If you have the names
>
> 0, 00, 000, 000_A, 000_B
>
> I expected it to be sorted
>
> 0
> 00
> 000
> 000_A
> 000_B
>
> But I get
>
> 000
> 000_A
> 000_B
> 00
> 0


 
Eraser ©   (2013-06-01 14:26) [3]

вот подлецы, наплодили функций в API, а сами ими не пользуются )


 
Rouse_ ©   (2013-06-01 14:27) [4]

ЗЫ: ну и на W2K, которую все еще саппортят, ес не ошибаюсь ее нет :)


 
Rouse_ ©   (2013-06-01 14:28) [5]

Надо кстати действительно дополнить статейку, а то будут еще пруфлинки давать :)
Пасип :)


 
брат Птибурдукова   (2013-06-01 14:31) [6]


> Rouse_ ©   (01.06.13 14:18) 
Ну если был в Киеве и не предупредил, объявлю вендетту…


 
Rouse_ ©   (2013-06-01 14:57) [7]


> Eraser ©   (01.06.13 14:26) [3]

Готово, кстати посмотри результат такой сортировки :)


> брат Птибурдукова   (01.06.13 14:31) [6]
>
> > Rouse_ ©   (01.06.13 14:18) 
> Ну если был в Киеве и не предупредил, объявлю вендетту…

Димч, ты чего? Я ж знаю что за такое мне сразу пожизненный эцих с гвоздями :)
Не, Пашка Голубь вчера приезжал просто :)
Народ собирали по сарафанному радио, решили глобальный сейшен не делать, ибо было чего на профтемы пообсуждать (за бабло трещали короче) :)


 
Розалия Самойловна   (2013-06-01 15:07) [8]


> Rouse_ ©   (01.06.13 14:18)
> После вчерашнего мини ММР с украинскими коллегами

Ты конечно этот пост сотрешь, и ветку закроешь...
Но, по-моему, ты так обрадовался встрече с украинскими коллегами, что сильно навстречался...

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

Получается, что ты разбиваешь строку на две сущности, одна из которых число - но для тех областей где это необходимо, эти сущности и так разделены и нормально сортируются при помощи ORDER BY f1 f2 с последующим, при необходимости, соединением строк при выводе.

Т.е. для общего случая сортировка Windows более правильная.


 
Rouse_ ©   (2013-06-01 15:11) [9]


> Ты конечно этот пост сотрешь, и ветку закроешь...

Почему?


> Предложенный тобой тип сортировки имеет только узкоспециализированное,
>  боюсь что только для этого примера, применение.

Да это вообще можно сказать не сортировка, это просто воспроизведение аналогичной сортировки из проводника :)


> Получается, что ты разбиваешь строку на две сущности, одна
> из которых число - но для тех областей где это необходимо,
>  эти сущности и так разделены и нормально сортируются при
> помощи ORDER BY f1 f2 с последующим, при необходимости,
> соединением строк при выводе.

А вот это не понял, это ты про базы уже говоришь?


> Т.е. для общего случая сортировка Windows более правильная.

И этого тоже не понял, сортировка Windows это что?
Имеется ввиду lstrcmp?


 
Eraser ©   (2013-06-01 15:12) [10]


> Rouse_ ©   (01.06.13 14:57) [7]

да уж ) результат StrCmpLogicalW, мягко скажем, странный.

вообще за функцию спасибо, ей применение найдется, вот только опять этот Делфи 7 без юникода ))


 
Rouse_ ©   (2013-06-01 15:14) [11]

Работает и на Delphi7 и на Юникодных Delhi 2009 и выше (она сначала на них и писалась под задачу, это я уже потом причесал чтоб под семеркой собралась :)


 
Eraser ©   (2013-06-01 15:23) [12]

нашел ошибку в вызове StrCmpLogicalW.

вместо

 Result := StrCmpLogicalW(@S1, @S2);


нужно вот так
 Result := StrCmpLogicalW(PChar(S1), PChar(S2));


 
Eraser ©   (2013-06-01 15:25) [13]


> Eraser ©   (01.06.13 15:23) [12]

результат аналогичен твой функции на прошитом наборе данных. (win 8).


 
Rouse_ ©   (2013-06-01 15:26) [14]


> Eraser ©   (01.06.13 15:23) [12]
> нашел ошибку в вызове StrCmpLogicalW.

Вах, во я прошляпил...
Правлю...


 
Розалия Самойловна   (2013-06-01 15:28) [15]


> И этого тоже не понял, сортировка Windows это что?

Это default сортировка Проводника Windows.


> А вот это не понял, это ты про базы уже говоришь?

Не совсем так. Я говорю о том, что там где нужен твой тип сортировки уже давно применяются сортировка a-la сортировки БД.

Вот продемонстрирую на таком примере.
Ты считаешь что сортировка вида:

1a1
1a2
1a100

правильная.
Но правильная она будет только лишь в том случае, когда 1-2-100 это порядковые числа.
Но когда это другая сущность, например номер версии или ответвления, и запись вида 100 значит 1-0-0 (версия 1 подверсия 0-0) то будет правильной именно:

1a1
1a100
1a2

Т.е. не зная истинного значения сортируемой строки сортировать нету смыла.
А твой вид сортировки "как-бы-налету" придумывает слысл для строчки.


 
Rouse_ ©   (2013-06-01 15:34) [16]


> Это default сортировка Проводника Windows.

Так я ее и воспроизвожу.


> Но когда это другая сущность, например номер версии или
> ответвления, и запись вида 100 значит 1-0-0 (версия 1 подверсия
> 0-0) то будет правильной именно:

Понял о чем ты.
Согласен на все 100, но!!!
Но тут я как раз о сортировке проводника и рассказываю, как о украшательстве.
Понятно что применять ее повсеместно будет категорической ошибкой.


 
Розалия Самойловна   (2013-06-01 15:43) [17]

Удалено модератором


 
Rouse_ ©   (2013-06-01 15:51) [18]


> Rouse_ ©   (01.06.13 15:26) [14]

Готово, кстати благодаря тебе выцепил ошибку с числами состоящими из множества нулей. Респект :)


> Розалия Самойловна   (01.06.13 15:43) [17]
> А если это не число, а код, как в моем примере ? Почему
> какая-то программа должна решать за меня ?

Тут видишь в чем дело, какая-то там программа за тебя ничего решить не может, ибо этот алгоритм должен быть применен разработчиком этой программы.
И вот вопрос, зачем он его применил не в том месте где надо, нужно задавать непосредственно разработчику, а не мне :)

Ну а за картинку твой пост придется грохнуть, увы...


 
Розалия Самойловна   (2013-06-01 15:55) [19]


> Ну а за картинку твой пост придется грохнуть, увы...

Так давно уже говориться - приделайте к функционалу тег <spoiler> - как раз для таким моментов ;)


 
Rouse_ ©   (2013-06-01 15:57) [20]

Ну это-ж не ко мне...


 
Юрий Зотов ©   (2013-06-01 16:00) [21]


> Розалия Самойловна   (01.06.13 15:43) [17]

Дык... Розыч ведь так и сразу написал, что это бантик. И ежу понятно, что способ сортировки может зависеть от контекста. Не зря же всякие там CustomSort придуманы - пишем свой компаратор, и все ОК.

PS
А Лева шикарный...
:o)


 
брат Птибурдукова   (2013-06-01 16:37) [22]


> Rouse_ ©   (01.06.13 14:57) [7]
Печален я и скорбен головою во времена оны, когда по субботам отрабатывать приходится. Не сразу доходит, что в «ММП» М означает Москву.


 
Rouse_ ©   (2013-06-01 16:45) [23]


> брат Птибурдукова   (01.06.13 16:37) [22]
> Печален я и скорбен головою во времена

Во ты выдал :)


 
turbouser ©   (2013-06-01 18:12) [24]


>
> Rouse_ ©   (01.06.13 14:18)
>
> После вчерашнего мини ММР

А где доклад и фотки?


 
Rouse_ ©   (2013-06-01 18:33) [25]


> turbouser ©   (01.06.13 18:12) [24]
> А где доклад и фотки?

Доклада не будет (собрались, погудели, разошлись - че там описывать-то?), фотки готовлю (но блин лениво сильно).
Сегодня вечером или завтра днем выложу на http:/mmp.flat-design.ru


 
robt5   (2013-06-01 20:09) [26]

как насчот кто быстрей ? твоя или виндовая?


 
Rouse_ ©   (2013-06-01 21:06) [27]


> robt5   (01.06.13 20:09) [26]
> как насчот кто быстрей ? твоя или виндовая?

Хм, честно говоря не проверял. Моя реаллоков не использует (за исключением приведения к нижнему регистру) а дальше банальный курсор.
Я свой вариант делал, опираясь на родную реализацию CompareString, правда не стал заморачиваться с разворачиванием циклов.
Думаю если и медленнее, то на какие-то копейки...


 
Юрий Зотов ©   (2013-06-01 21:09) [28]

> брат Птибурдукова   (01.06.13 16:37) [22]

Печален я и скорбен головою,
И на луну по вечерам я вою...
:o)


 
Rouse_ ©   (2013-06-01 21:17) [29]


> robt5   (01.06.13 20:09) [26]
> как насчот кто быстрей ? твоя или виндовая?

Ан нет, проверил, моя существенно медленней...


 
robt5   (2013-06-02 18:24) [30]


> Rouse_ ©   (01.06.13 21:17) [29]

нафига там CharInSet функцией сделано? этож бред


 
antonn ©   (2013-06-02 19:56) [31]


> Понял о чем ты.
> Согласен на все 100, но!!!
> Но тут я как раз о сортировке проводника и рассказываю,
> как о украшательстве.

ну как сказать, я наоборот везде где сортирую строки пытаюсь эту "виндовую сортировку" сделать


 
Rouse_ ©   (2013-06-02 20:25) [32]


> нафига там CharInSet функцией сделано?

Код изначально писался на D2010, там используется именно функция, в противном случае будет Warning


 
Jeer ©   (2013-06-02 23:29) [33]

"Отшумели винты навсегда, навсегда.."

P.S.
Да я до сих пор на D7 и хрен меня оттуда сковырнешь:)


 
robt5   (2013-06-03 09:43) [34]


> Rouse_ ©   (02.06.13 20:25) [32]

использование подобных "функций" это удел батонокидателей
должно быть чистое логическое условие  ( c > "/" ) and ( c < ":" ), без всяких множеств
кроме того основной тормоз тут скорей всего это AnsiLowerCase ибо неправильно используется
+можно еще пару оптимизаций алгоритмических применить
вот тогда будет норм


 
brother ©   (2013-06-03 09:54) [35]

> это AnsiLowerCase

как тогда приводить к нижнему регисру быстрее?


 
antonn ©   (2013-06-03 10:52) [36]

можно хранить копию строки в нижнем регистре чтобы постоянно не использовать функцию


 
Дмитрий СС   (2013-06-03 11:21) [37]

Простите за оффтопик, может кто-то знает как сделать в проводнике, чтобы сортировка по дате выдавала файлы и папки вперемешку, а не сначала папки, потом файлы?


 
antonn ©   (2013-06-03 11:54) [38]


> Простите за оффтопик, может кто-то знает как сделать в проводнике,
>  чтобы сортировка по дате выдавала файлы и папки вперемешку,
>  а не сначала папки, потом файлы?

в каком проводнике? у меня в Вин7 (и 2008 сервер) как раз такая сортировка, как бы ее отключить... а на ХР папки и файлы отдельно


 
Sha ©   (2013-06-03 11:58) [39]

> Rouse_

Нулевое значение - это частный случай лидирующих нулей, хорошо бы их тоже обрабатывать.

1
01
001
0001
00001
...


 
Дмитрий СС   (2013-06-03 12:02) [40]


> в каком проводнике? у меня в Вин7 (и 2008 сервер) как раз
> такая сортировка, как бы ее отключить... а на ХР папки и
> файлы отдельно

И у меня win7, а можешь скриншот прислать?



Страницы: 1 2 вся ветка

Форум: "Прочее";
Текущий архив: 2013.11.24;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.55 MB
Время: 0.003 c
15-1370464203
Юрий
2013-06-06 00:30
2013.11.24
С днем рождения ! 6 июня 2013 четверг


15-1370594895
Новичок 4444
2013-06-07 12:48
2013.11.24
Как стать программистом ?


2-1361050015
Zuide
2013-02-17 01:26
2013.11.24
Prorisovat knopku


2-1360930799
Camaro
2013-02-15 16:19
2013.11.24
Считывание данных со стрима


11-1248772086
Антон Кивва
2009-07-28 13:08
2013.11.24
Не могу скомпилировать проект.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский