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

Вниз

Tlist.Sort   Найти похожие ветки 

 
McSimm2   (2003-05-28 10:36) [0]

Народ, торможу: объясните что передавать в сабж нужно ???

type TListSortCompare = function (Item1, Item2: Pointer): Integer;
procedure Sort(Compare: TListSortCompare);

^^^ Это как ???


 
MBo ©   (2003-05-28 10:38) [1]

пишешь функцию с такими параметрами (не метод класса!), результат которой зависит от сравнения элементов, и указываешь ее при вызове Sort


 
Palladin ©   (2003-05-28 10:41) [2]

примерно так

function Absurd(p1,p2:pointer):integer;
begin
result:=integer(p1)-integer(p2);
end;

...

TList.Sort(Absurd);


 
McSimm2   (2003-05-28 10:45) [3]

А В качестве Item1, Item2 я что передаю? У меня смысл такой, что мой TList содержит указатели на рекорд, поле в котором символьное. Вот по нему мне и нужно сортировку провести.


 
Palladin ©   (2003-05-28 10:50) [4]

ты?
ты ничего не передаешь, эту функцию можно определить как callback,
тоесть ее вызывает TList при сортировке элементов, Item1 и Item2 это и есть твои record, сравнивай...


 
gek ©   (2003-05-28 10:53) [5]

Ну тогда примерно так



type
pRecAb = ^ TRecAb;
TRecAb = record
NAb:string;
................
................
................
end;


function CompareListItems(Item1,Item2:pointer):integer;
var
RecA : pRecAb absolute Item1;
RecB : pRecAb absolute Item2;
begin
if RecA^.NAb < RecB^.NAb then result:= -1
else if RecA^.NAb = RecB^.NAb then result:= 0
else result:= 1
end;


ListAb.Sort(CompareListItems); //сортировка



Поверь у меня сортирует


 
McSimm2   (2003-05-28 10:56) [6]

To Palladin

Я имею ввиду функцию Absurd(p1,p2:pointer):integer;
Мне сравнить нужно не integer,а string ....
Мне p1 и p2 нужно по всему алфавиту гонять что выяснилось что раньше идёт ???


 
McSimm2   (2003-05-28 10:57) [7]

To gek

огромное спасибо ....


 
McSimm2   (2003-05-28 11:04) [8]

To gek

IMHO вот так нужно
ListAb.Sort(@CompareListItems);


 
pasha_golub ©   (2003-05-28 11:50) [9]

2McSimm2

Совершенно без разницы. Компиллер одинаковый код генерит!


 
McSimm2   (2003-05-28 11:55) [10]

в Help`е передаётся адрес..


 
gek ©   (2003-05-28 12:03) [11]


> McSimm2 (28.05.03 11:55)


Ну а что же ты сначала в help не полез?


 
McSimm2   (2003-05-28 12:08) [12]

В help залез - не совсем понял что в функции описывать :(



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

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

Наверх




Память: 0.49 MB
Время: 0.026 c
1-26454
k-sergey
2003-05-29 12:22
2003.06.09
Удалить саму себя...


1-26515
DimonA
2003-05-30 10:37
2003.06.09
RichEdit


1-26425
Александр из Минска
2003-05-28 15:29
2003.06.09
StringGrid


1-26488
vitall
2003-05-29 03:23
2003.06.09
TMenuItem, PopupMenu


1-26487
lightix
2003-05-29 15:06
2003.06.09
Передача данных в Excel из C++ Builder