Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Численная сортировка [D6, WinXP]


Василич ©   (2002-08-05 12:09:00) 

Не подскажете, как отсортировать строки в ComboBox, если они представляют из себя численные значения, допустим у меня в ComboBox грузятся из базы некоторые численные значения, и получается так:

1024
128
16
160
192
24
256
32
4
48
512
64
8
96

а надо, чтобы была численная сортировка, а не строковая. Спасибо.


Василич   (2002-08-06 16:48:00) [1]

Да, я уже въехал. Все дело в том, что ComboBox.Sorted was True...., а сортировать данные в ComboBox"е не надо было...


lenin   (2002-08-06 16:15:00) [2]

Sorted сортирует по алфавиту.


Song   (2002-08-06 16:10:00) [3]

Не надо никакого CustomSort(). У TStringList есть свойство Sorted. А у TComboBox.Items тип TStrings, прямая абстрактная зависимость... Зачем Вам пузырёк...? Тут и стакана хватит :-)


Василич   (2002-08-06 13:44:00) [4]

>>IlyaA

Оно самое. Просто и конструктивно. Спасибо.


IlyaA   (2002-08-06 12:13:00) [5]

Самый простой метод "Пузырька": (Вот тебе код)
Пусть данные в ListBox /надеюсь сам поймёшь как переделать/

For i:=0 to ListBox.Items.Count-1 do
For j:=ListBox.Items.Count-1 downto i do
If StrToInt(ListBox.Items[j]) < StrToInt(ListBox.Items[j-1]) then
begin
Tmp:=ListBox.Items[j];
ListBox.Items[j]:=ListBox.Items[j-1];
ListBox.Items[j-1]:=Tmp;
end;


Удачи.


kull   (2002-08-06 11:16:00) [6]

2 Василич

Ну я не знаю. Я работаю с Interbase - у меня все с Order by в порядке. Если ORDER BY не сортирует, зачем он нужен?


Ученик   (2002-08-06 09:29:00) [7]

>Василич (05.08.02 22:05)
Все оказалось сложнее чем предполагалось, указанное сообщение посылается только, если ComboBox имеет стили CBS_OWNERDRAWFIXED и не имеет стилей CBS_HASSTRINGS, что влечет за собой дополнительные проблемы, поэтому в данном случае решение вряд ли подходит, сорри.


Василич   (2002-08-06 09:14:00) [8]

RAM smallint

MSSQL


kull   (2002-08-06 01:41:00) [9]


> Они не приходят отсортированными.

А RAM - это целочисленное поле или строка (может вообще вариантного типа)?
Если целочисленное, то что за БД у тебя?
Не приводит ли преобразование: RAM AS [Оперативная память] к нецелому типу?

Order by должен работать на ура, что то у тебя с запросом не то...


Василич   (2002-08-05 22:05:00) [10]

>>kull

SELECT TOP 100 PERCENT RAM AS [Оперативная память]
FROM dbo.RAMs
ORDER BY RAM

Они не приходят отсортированными.

>>IlyaA

Каким образом ?

>> Ученик

Не подскажешь, как и когда обрабатывать это сообщение, и когда оно вообще возникает ?


kull   (2002-08-05 18:49:00) [11]

А это не подойдет?
Select {field name} from {table name} order by {field name}

Данные приходят уже отсортированными...


IlyaA   (2002-08-05 15:07:00) [12]

Напиши собственный сортировщик


Skier   (2002-08-05 14:34:00) [13]

>Василич
А также : код быстрой сортировки (Хоора) можно подсмотреть
в Дельфийском примера по thread-ам...


Opuhshii   (2002-08-05 14:14:00) [14]

2Василич (05.08.02 12:13)
неужели даже метод пузырьковой сортировки вам неизвестен...


c0pYc@t   (2002-08-05 12:51:00) [15]

а что strtoint не помогает?


Skier   (2002-08-05 12:21:00) [16]

>Василич
Можно так :
- перекачать все строки из ComboBox-а в TStringList.
- написать у него [TStringList-а] код метода CustomSort
- отсортировать строчки в TStringList-е
- засунуть строчки из TStringList-а обратно в ComboBox


Ученик   (2002-08-05 12:18:00) [17]

WM_COMPAREITEM


lenin   (2002-08-05 12:16:00) [18]

А какая разница из базы или нет.


lenin   (2002-08-05 12:13:00) [19]

В ручную сортировать.


Василич   (2002-08-05 12:13:00) [20]

Как же вручную, если значения из базы данных вытаскиваются ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо