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

Вниз

Сортировка в TList   Найти похожие ветки 

 
Max ©   (2004-03-19 14:34) [0]

Здравствуйте!


type
 PMyListItem = ^AMyListItem;
 AMyListItem = record
   Values: array[0..5] of String;
 end;


TList содержит элементы PMyListItem. Как отсортировать элементы TList по нескольким "полям". Т.е. сортировать по Values[0], Values[1], Values[2], при сначала по Values[0], если совпадает, то по Values[1] и если тоже совпадает то по Values[2].


 
Digitman ©   (2004-03-19 14:55) [1]

см. TList.CustomSort()


 
Max ©   (2004-03-19 15:06) [2]

Digitman
А почему-то не нашел в TList такого :(


 
Тимохов ©   (2004-03-19 15:10) [3]

полагаю dm хотел сказать sort
customsort это из tstringlist


 
Digitman ©   (2004-03-19 15:15) [4]


> Max ©   (19.03.04 15:06) [2]


если бы ты искал решение в принципе, давно бы наткнулся на метод Sort... и без меня и без моей неточности давно нашел бы ...

репу чесать хоть чуть-чуть надо же ...


 
Max ©   (2004-03-19 15:17) [5]

Тимохов
Допустим вот функция для сортировки
function ListSort(Item1, Item2: Pointer): Integer;
begin
 if PMyListItem(Item1)^.Values[0] <> PMyListItem(Item2)^.Values[0] then
   Result := CompareItems(PMyListItem(Item1)^.Values[0], PMyListItem(Item2)^.Values[0])
 else
   Result := CompareItems(PMyListItem(Item1)^.Values[1], PMyListItem(Item2)^.Values[1]);
end;


Но как я знаю, при таком способе сортировка не будет доведена до конца...


 
Max ©   (2004-03-19 15:20) [6]

Digitman
Я про него знаю, знаю как отсортировать по одному "полю", а как по нескольким сообразить не могу.


 
Digitman ©   (2004-03-19 15:34) [7]

"Боня, ты - тупой !" (С) КВН

for i:= 0 to 5 do
begin
Result := CompareText(PMyListItem(Item1).Values[I], PMyListItem(Item2).Values[I]);
if Result = 0 then
  break;
end;


 
Digitman ©   (2004-03-19 15:43) [8]

Боня - это я))

if Result <> 0 then
  break;



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

Форум: "Основная";
Текущий архив: 2004.04.04;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.033 c
1-1079612780
sav
2004-03-18 15:26
2004.04.04
TreeView


1-1079411061
ГАГН
2004-03-16 07:24
2004.04.04
Работа с .txt?


14-1078837993
Nelud
2004-03-09 16:13
2004.04.04
Еще немного физики...


4-1075209199
graY
2004-01-27 16:13
2004.04.04
Как определить хэндл любого компонента(findWindow не находит)


1-1079495063
N
2004-03-17 06:44
2004.04.04
Excel





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский