TFPGObjectList<T>.Sort или как сортировать список?

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

TFPGObjectList<T>.Sort или как сортировать список?

Сообщение resident » 25.06.2016 17:42:26

Здравствуйте!
Не сортирует список.
В исходниках шаблон функции сортировки:
Код: Выделить всё
    type
      TCompareFunc = function(const Item1, Item2: T): Integer;

Вроде делаю по шаблону (см. последнюю строку):
Код: Выделить всё
type
  TMyNode = class;
  TMyNodeList = specialize TFPGObjectList<TMyNode>;

  { TMyNode }

  TMyNode = class
    private
      fPath: string;
      fName: string;
    public
      property Path: string read fPath write fPath;
      property Name: string read fName write fName;

      constructor Create;
      destructor Destroy;
    end;

  function CompareMyNodes(const Item1, Item2: TMyNode): Integer; 


Но при попытке использовать:
Код: Выделить всё
MyNodeList.Sort(CompareMyNodes);


Выдает ошибку
ufxml.pas(71,21) Error: Wrong number of parameters specified for call to "CompareMyNodes"


Чего-то в сети не нашел примеров про этот метод (Sort). Может подскажете, как его использовать?

Добавлено спустя 20 минут 9 секунд:
Кхе, забыл про @, теперь компилируется, но вылетает с ошибкой Access Violation.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: TFPGObjectList<T>.Sort или как сортировать список?

Сообщение Лекс Айрин » 25.06.2016 18:22:34

resident писал(а):но вылетает с ошибкой Access Violation.


видимо, считаешь с 1, а список идет с 0.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: TFPGObjectList<T>.Sort или как сортировать список?

Сообщение resident » 25.06.2016 19:08:54

Да не, метод же лазарусовцы писали. Моя только функция сравнения.
Там оказалось, что значениями функции могут быть только -1, 0, 1.
Вроде работает.

Добавлено спустя 52 секунды:
Подсмотрел здесь:
http://francois-piette.blogspot.ru/2013 ... chive.html
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: TFPGObjectList<T>.Sort или как сортировать список?

Сообщение Лекс Айрин » 25.06.2016 19:23:23

понятно... троичная логика...
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 244

Рейтинг@Mail.ru