Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Вниз
Численная сортировка Найти похожие ветки
← →
Василич (2002-08-05 12:09) [0]Не подскажете, как отсортировать строки в ComboBox, если они представляют из себя численные значения, допустим у меня в ComboBox грузятся из базы некоторые численные значения, и получается так:
1024
128
16
160
192
24
256
32
4
48
512
64
8
96
а надо, чтобы была численная сортировка, а не строковая. Спасибо.
← →
lenin (2002-08-05 12:13) [1]В ручную сортировать.
← →
Василич (2002-08-05 12:13) [2]Как же вручную, если значения из базы данных вытаскиваются ?
← →
lenin (2002-08-05 12:16) [3]А какая разница из базы или нет.
← →
Ученик (2002-08-05 12:18) [4]WM_COMPAREITEM
← →
Skier (2002-08-05 12:21) [5]>Василич
Можно так :
- перекачать все строки из ComboBox-а в TStringList.
- написать у него [TStringList-а] код метода CustomSort
- отсортировать строчки в TStringList-е
- засунуть строчки из TStringList-а обратно в ComboBox
← →
c0pYc@t (2002-08-05 12:51) [6]а что strtoint не помогает?
← →
Opuhshii (2002-08-05 14:14) [7]2Василич (05.08.02 12:13)
неужели даже метод пузырьковой сортировки вам неизвестен...
← →
Skier (2002-08-05 14:34) [8]>Василич
А также : код быстрой сортировки (Хоора) можно подсмотреть
в Дельфийском примера по thread-ам...
← →
IlyaA (2002-08-05 15:07) [9]Напиши собственный сортировщик
← →
kull (2002-08-05 18:49) [10]А это не подойдет?
Select {field name} from {table name} order by {field name}
Данные приходят уже отсортированными...
← →
Василич (2002-08-05 22:05) [11]>>kull
SELECT TOP 100 PERCENT RAM AS [Оперативная память]
FROM dbo.RAMs
ORDER BY RAM
Они не приходят отсортированными.
>>IlyaA
Каким образом ?
>> Ученик
Не подскажешь, как и когда обрабатывать это сообщение, и когда оно вообще возникает ?
← →
kull (2002-08-06 01:41) [12]
> Они не приходят отсортированными.
А RAM - это целочисленное поле или строка (может вообще вариантного типа)?
Если целочисленное, то что за БД у тебя?
Не приводит ли преобразование: RAM AS [Оперативная память] к нецелому типу?
Order by должен работать на ура, что то у тебя с запросом не то...
← →
Василич (2002-08-06 09:14) [13]RAM smallint
MSSQL
← →
Ученик (2002-08-06 09:29) [14]>Василич (05.08.02 22:05)
Все оказалось сложнее чем предполагалось, указанное сообщение посылается только, если ComboBox имеет стили CBS_OWNERDRAWFIXED и не имеет стилей CBS_HASSTRINGS, что влечет за собой дополнительные проблемы, поэтому в данном случае решение вряд ли подходит, сорри.
← →
kull (2002-08-06 11:16) [15]2 Василич
Ну я не знаю. Я работаю с Interbase - у меня все с Order by в порядке. Если ORDER BY не сортирует, зачем он нужен?
← →
IlyaA (2002-08-06 12:13) [16]Самый простой метод "Пузырька": (Вот тебе код)
Пусть данные в 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;
Удачи.
← →
Василич (2002-08-06 13:44) [17]>>IlyaA
Оно самое. Просто и конструктивно. Спасибо.
← →
Song (2002-08-06 16:10) [18]Не надо никакого CustomSort(). У TStringList есть свойство Sorted. А у TComboBox.Items тип TStrings, прямая абстрактная зависимость... Зачем Вам пузырёк...? Тут и стакана хватит :-)
← →
lenin (2002-08-06 16:15) [19]Sorted сортирует по алфавиту.
← →
Василич (2002-08-06 16:48) [20]Да, я уже въехал. Все дело в том, что ComboBox.Sorted was True...., а сортировать данные в ComboBox"е не надо было...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.08.19;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.007 c