[Solved] Магическое исчезновение Data в TListView

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

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

Ответить
KKAA
незнакомец
Сообщения: 8
Зарегистрирован: 10.05.2015 17:39:02

[Solved] Магическое исчезновение Data в TListView

Сообщение KKAA »

Пытаюсь отсортировать по своему элементы TListview путем сравнения нескольких параметров не одного типа, хранящихся во внешнем контейнере. Указатель на контейнер сохраняю в поле Data. Когда вызываю метод onCompare, то, после нескольких удачных проходов, я получаю AV в строке item2.data. Причем если я делаю сравнение как

Код: Выделить всё

Compare:=i1-i2;
, то все нормально и все сравнивается. Но если через if..then ловлю av.
тестовый проект во вложении.
Где я там дурак?
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось KKAA 15.05.2015 21:23:17, всего редактировалось 1 раз.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3071
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

забыта проверка на ноль

Код: Выделить всё

  i1:=Integer(Item1.Data^);
  i2:=Integer(Item2.Data^);
  Compare:=0;
  if i1>i2 then
     Compare:=1
  else
  if i1<i2 then
     Compare:=-1
  else
  Compare:=-0;     
KKAA
незнакомец
Сообщения: 8
Зарегистрирован: 10.05.2015 17:39:02

Сообщение KKAA »

Да, спасибо, уже разобрался, при выполнении моего кода со случайного шага запускался бесконечный цикл и о содержании правильных указателей уже и речи не было, отсюда и AV
Аватара пользователя
Vapaamies
постоялец
Сообщения: 292
Зарегистрирован: 24.07.2012 22:37:59
Откуда: Санкт-Петербург
Контактная информация:

Сообщение Vapaamies »

Снег Север писал(а):забыта проверка на ноль

Блин, а я втыкал-втыкал в код, дивился его логике, но так и не смог понять, что же хотел выразить автор. :mrgreen:
Ответить