Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.16;
Скачать: CL | DM;

Вниз

Сортировка элементов TListBox вручную   Найти похожие ветки 

 
Brut   (2004-01-02 20:51) [0]

Здравствуйте.
Имеются несколько элементов в ListBox"е формата [num]. [text] . Ну например:
1. Sometext
2. Elsesometext
...
10. Megatext
Их нужно отсортировать в порядке возрастания числа [num]. Проблема в том, что при вызове ListBox.Items.Sort строки сортируются так:
1. Sometext
10. Megatext
11...
2. Elsesometext
А мне нужно:
1. Sometext
2. Elsesometext
...
10. Megatext.
По разному пробовал - не получается. Помогите пожалуйста
PS. Для сортировки я везде обьявлял переменную типа TStringList, потом в эту переменную := ListBox.Items ну а далее работал с той переменной.


 
default ©   (2004-01-02 20:57) [1]

так там можно определять процедуру сравнения, в хелпе пример есть
(по ней и будут проводиться сравнения при сортировке)


 
default ©   (2004-01-02 20:59) [2]

TStringList.CustomSort + F1


 
Stilgar ©   (2004-01-02 21:07) [3]

А еще проще - получать число до точки и сортировать самому (из одного TStringList в другой)


 
Brut   (2004-01-02 21:10) [4]

В упор не вижу примера :)


 
Brut   (2004-01-02 21:11) [5]

Stillgar я так и делаю. А отсортировать не могу.
default, не мог бы ты привести пример здесь... в хелпе не могу найти.


 
Stilgar ©   (2004-01-02 21:36) [6]

И ты, Брут... (думать не хочешь) :)
Вобщем проверять - не проверял, да и сортировкой давно не занимался.
procedure Sort;
var
SL1, SL2: TStringList;
List: array of Integer;
I, J: Integer;
Lowest: Integer;
Number: Integer;
begin
SL1:=TStringList.Create;
SL2:=TStringList.Create;

SetLength(List, SL1.Count);
for I:=0 to SL1.Count-1 do
List[I]:=StrToInt(Copy(SL1[I], 1, Pos(".", SL1[I])-1));

Lowest:=Low(Integer);
for I:=0 to SL1.Count-1 do
begin
for J:=0 to Length(List)-1 do
if List[J]>Lowest then
begin
Lowest:=List[J];
Number:=J;
end;

SL2.Add(SL1[J]);
end;

SL1.Free;
SL2.Free;
end;


 
raidan ©   (2004-01-02 21:42) [7]

Пузырьковая :)))
Посмотри в demos\threads\ примеры сортировки :)))


 
Stilgar ©   (2004-01-02 21:46) [8]

2 raidan ©
Если список большой, пузырьковая будет работать медленнее. Или там с оптимизацией?


 
Brut   (2004-01-02 21:48) [9]

Stilgar пасиб тебе огроменное. Век не забуду.



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

Текущий архив: 2004.01.16;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
11-49475
Bystander
2003-05-03 13:49
2004.01.16
Scroll Bar & KOL


4-49803
Erik
2003-11-10 16:49
2004.01.16
Получение лога состояния кнопок в чужом приложении.


3-49440
S.A.S.
2003-12-17 14:21
2004.01.16
Разрешение на открыти базы в Win2000


6-49656
Timerman
2003-11-10 23:10
2004.01.16
Как синхронизировать время с локалкой?


3-49421
kvit
2003-12-19 07:45
2004.01.16
Проблема с вызовом хранимой процедуры MSSQL+ADO