Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > Сортировка в TObjectList


Автор: 1122 20.11.2009, 22:57
Всем привет всем. Помогите отсортировать массив объектов по значению переменной в поле класса, из объектов которого и состоит массив TObjectList.

Код

procedure TMainForm.Timer2Timer(Sender: TObject);
var
numb: integer;
Begin
....
  files.name:=str;
  files.number:=numb;
  MyObjectList.Add(files);
....
MyObjectList.Sort.... ???? < -------
....
end;


Собственно как отсортировать содержимое MyObjectList по полю files.number ?

Автор: Демо 20.11.2009, 23:32
Вот пример из Help:

Код

function CompareNames(Item1, Item2: Pointer): Integer;
begin
   Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   List1.Sort(@CompareText);
end

Автор: Dom 21.11.2009, 07:45
Да, в хелпе написано именно так, но по-моему правильнее, когда передается указатель на процедуру CompareNames, а не CompareText. 

Код

function CompareNames(Item1, Item2: Pointer): Integer;
begin
   Result := CompareText((Item1 as TComponent).Name, (Item2 as TComponent).Name);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
   List1.Sort(@CompareNames);
end;

Автор: Демо 21.11.2009, 15:37
Цитата(Dom @  21.11.2009,  07:45 Найти цитируемый пост)
Да, в хелпе написано именно так, но по-моему правильнее, когда передается указатель на процедуру CompareNames, а не CompareText. 


Какая разница-то как назвать? smile 

Автор: Christoph 21.11.2009, 16:59
Демо, разницы нет, ты описал CompareNames, и передаешь в методе указатель на совсем другую функцию (COmparetext)

Автор: Демо 21.11.2009, 18:15
Цитата(Christoph @  21.11.2009,  16:59 Найти цитируемый пост)
Демо, разницы нет, ты описал CompareNames, и передаешь в методе указатель на совсем другую функцию (COmparetext)


Вот ведь блин.

Ты читать-то умеешь? Приведён пример из Help - Как сортировать в TObjectList.
Как назвать функцию, как изменить пример из Help применительно к своей задаче - дело автора вопроса.

Название функции в Help не является предметом дискуссии темы этого топика.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)