Страница 1 из 1
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 9:00
yuriy
Доброе время суток
Clarion 5.5 В файле DAT есть поле объявленное как String
в нём будет храниться информация о пунктах плана например:
1.1
1.2
1.3
1.4
Пока уровня всего 2 сортировка работает корректно, если добавляется 3 уровень то сортировка сбивается
1.1.1
1.1.10
1.1.11
1.1.2
1.1.3
1.1.4
Подскажите пожалуйста можно ли это исправить?
С уважением
Юрий
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 9:38
vd-vuf
сортировку не исправить, и в 2 уровнях она тоже слетит как только появятся значения десятков и более.
можно поправить ситуацию если форматировать числа, заранее определившись с рязрядностью уровней
то есть, к примеру, по 2 разряда на 2й и 3й уровень.
1.1.1 --> 1.01.01
1.1.2 --> 1.01.02
1.1.10 --> 1.01.10
1.1.11 --> 1.01.11
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 10:00
Shur
Сортировку вы конечно же исправить не сможете, да она здесь и не виновата.
И, если ничего не менять в таблице, то ничего не получится.
Надо либо прибегнуть к тому, что сказал вам vd-vuf,
либо, если это смотрится как-то не хорошо,
такое поле иметь скрытым и не отображать его на экране, но после каждой модификации основного поля осуществлять его вычисление и сохранение, сделать по нему ключ и по нему-то сортировать записи. И, если это поле будет скрытым, то фантазия может разыграться, и вы сможете под каждый уровень отвести не по два, а по три, а ещё лучше четыре разряда.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 10:12
kreator
Shur писал(а):Надо либо прибегнуть к тому, что сказал вам vd-vuf,
либо, если это смотрится как-то не хорошо,
такое поле иметь скрытым и не отображать его на экране, но после каждой модификации основного поля осуществлять его вычисление и сохранение, сделать по нему ключ и по нему-то сортировать записи. И, если это поле будет скрытым, то фантазия может разыграться, и вы сможете под каждый уровень отвести не по два, а по три, а ещё лучше четыре разряда.
А какое поле? Тоже стринговое? Только с другим форматированием?
На мой взгляд, здесь классическое дерево по одной таблице. Вариант - либо вести её как дерево. Либо иметь поля Long для каждого уровня, сортировать по этим полям. а для удобства заполнять их вскрытую, делая разбор строки в момент записи.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 10:30
Shur
kreator писал(а): Либо иметь поля Long для каждого уровня, сортировать по этим полям.
Так не очень -- ты сразу ограничиваешь себя этим количеством уровней. Плюс имеешь головняк с перенумерацией, если нужно что-то вставить в середину.
kreator писал(а): Тоже стринговое? Только с другим форматированием?
Да, я бы завёл так. Назовём его скрытое стринговое поле с разрядным форматированием.
kreator писал(а): Вариант - либо вести её как дерево.
Понятно, что это иерархия. Понятно, что по одной таблице. Но список как-то легче построить, отсортировав по полю, нежели рекурсивно искать сыновей-родителей.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 11:53
Губин Игорь
Sort(queue,function)
Или ввести в файл некое числовое поле, в которое будет ПРАВИЛЬНО записываться индекс
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 12:07
kreator
Shur писал(а):Да, я бы завёл так. Назовём его скрытое стринговое поле с разрядным форматированием.
В принципе, да. Заложиться на 4 разряда, к примеру. Кстати, и буквенные индексы должны прокатить.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 13:30
Shur
Губин Игорь писал(а): Sort(queue,function)
По условию задачи имеем файл данных и С55.
А это сортировка очереди, а не таблицы.
Так что не прокатит.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 15:22
Admin
Shur писал(а): А это сортировка очереди, а не таблицы.
Любые таблицы отображаются в бровзе через очередь.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 15:29
Shur
Admin писал(а): Любые таблицы отображаются в бровзе через очередь.
Даже не спорю. В любом случае в C55 этой фичи не было.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 16:18
kreator
Shur писал(а):В любом случае в C55 этой фичи не было.
Эта "фича" изначально существует. Другое дело, может неудобно с этим работать (надо выкачивать весь набор и т.д.). Да и вот это - "Sort(queue,function)", что-то не человеческое. Вот если бы в Order (prop:Order) можно было чего загнать.
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 16:27
Губин Игорь
kreator писал(а): Вот если бы в Order (prop:Order) можно было чего загнать.
Загнать можно:
клаколсек
Вопрос только в том, что он действует на всё, а не только на конкретный файл
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 17:22
Shur
kreator писал(а): Эта "фича" изначально существует
Угу! Даже в C6.3 этого не было.
А вообще yuriy ещё ни разу нам фидбэк свой не прислал. А мы тут...!
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 18:06
yuriy
Большое всем спасибо
так как надо сделать очень быстро вполне подошел вариант предложенный vd-vuf
С Уважением
Юрий
Сортировка цифр в поле String
Добавлено: 11 Декабрь 2015, 18:32
Shur
yuriy писал(а): Большое всем спасибо
You are welcome!