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

Вниз

Как отсортировать список?   Найти похожие ветки 

 
siriusP   (2004-04-14 12:34) [0]

Подскажите алгоритм как отсортировать список, в котором лежит структура TRec.
Нужно, чтобы елементы шли по порядку
[0,0][1,0][0,1][1,1][0,2][1,2]...:
type
 TRec = class
   aCol: integer;
   aRow: integer;
   ...
 end;

 TMyClass = class
   FRec: TList;
   ...
   Sort();
 end;
...

Такая ф-ия неверная, в ней явно не хватает:
function CompareRec(Item1, Item2: Pointer): Integer;
begin
 result:= CompareValue(TRec(Item1).aCol, TRec(Item2).aCol);
end;

procedure TMyClass.Sort();
begin
 FRec.Sort(@CompareRec);
end;

Прошу помочь. Спасибо.


 
Семен Сорокин ©   (2004-04-14 12:38) [1]

type
 PRec = ^TRec;

function CompareRec(Item1, Item2: Pointer): Integer;
begin
result:= CompareValue(PRec(Item1)^.aCol, PRec(Item2)^.aCol);
end;


 
Семен Сорокин ©   (2004-04-14 12:41) [2]

сорри,
вот так:
function CompareRec(Item1, Item2: Pointer): Integer;
begin
Result := CompareValue(PRec(Item1)^.aCol, PRec(Item2)^.aCol);
if Result = 0 then
 Result := CompareValue(PRec(Item1)^.aRow, PRec(Item2)^.aRow)
end;


 
Курдль ©   (2004-04-14 12:43) [3]


function CompareRec(Item1, Item2: Pointer): Integer;
begin
result:= CompareValue(TRec(Item1).aCol, TRec(Item2).aCol);
end;

function CompareRec(Item1, Item2: Pointer): Integer;
var ItPtr1, ItPtr2: ^TRec;
begin
 ItPtr1 := Item1;
 ItPtr2 := Item2;
 if ItPtr1.Col > ItPtr2.Col then Result := 1                      
   else
     if ItPtr1.Col = ItPtr2.Col then
     begin
       if ItPtr1.Row > ItPtr2.Row then Result := 1
         else
           if ItPtr1.Row = ItPtr2.Row then Result := 0
              else Result := -1;
                 
     end else Result := -1;
end;

procedure TMyClass.Sort();
begin
FRec.Sort(CompareRec);
end;



 
siriusP   (2004-04-14 14:17) [4]

Премного благодарен.



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

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

Наверх





Память: 0.45 MB
Время: 0.036 c
1-1082086926
cvg
2004-04-16 07:42
2004.05.02
Какие есть цвета?


8-1075737379
Igoryok
2004-02-02 18:56
2004.05.02
Замкнутую область зарисовать


14-1081431110
menart
2004-04-08 17:31
2004.05.02
Закат империи янки


3-1081230888
maxz
2004-04-06 09:54
2004.05.02
Не могу в ClientDataSet выставить свойство Active в true


1-1082134353
AsD
2004-04-16 20:52
2004.05.02
LitView





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