Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2011, 22:27   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Странно,
Код:
procedure TVisibleLog.AddRecord(aRecordData: TLogRecord; Creating: boolean);
var
  LI: TlistItem;
begin
  Add(aREcordData); //add object to objectlist
  with fListView do
  begin
    LI := Items.Add;
    Li.SubItems.Add(aRecordData.LogMessage);
    LI.SubItems.Add(aRecordData.RecordTime);
    Li.Data:=aRecordData;
этот кусок кода выполняется, обязательно, для всех строк.

Далее:
Код:
procedure TVisibleLog.ShowLogMessage(aIndx: Integer);
var
  LR:TLogRecord;
begin
LR:=TLogRecord(fListView.Items[aIndx].Data);
  MessageBox(Application.handle,PChar(LR.LogMessage),PChar(LR.TypeAsText+' - '+LR.RecordTime),MB_OK or MB_ICONINFORMATION);
end;
Синий, выполняется, но равен nil. Почему? Куда исчезает указатель?
Дальнейшее выполение выпадает в AV.

Последний раз редактировалось Человек_Борща; 23.10.2011 в 22:30.
Человек_Борща вне форума Ответить с цитированием
Старый 23.10.2011, 22:40   #12
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Значит в Data nil. Ищите где не заполняете или где очищаете это поле. А nil точно? Возможно ссылка на удаленный объект?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.10.2011, 22:54   #13
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

хм, он где-то теряется...
тест-код:
Код:
    procedure ListView1DblClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

type
  TTestItem=Class(TObject)
  Thiss:string;
  end;


var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  LI:TListItem;
  TI:TTestItem;
begin
  LI:=Listview1.Items.Add;
  TI:=TTestItem.Create;
  ti.Thiss:='ололо';
  li.Caption:='Double Click!';
  Li.Data:=TI;
end;

procedure TForm1.ListView1DblClick(Sender: TObject);
var
  i:Integer;
  TI:TTestItem;
begin
  i:=ListView1.ItemIndex;
  if (i >= 0) then
  begin
    If ListView1.Items[i].Selected then
    begin
    TI:=TTestItem(ListView1.Items[i].Data);
    ShowMessage(TI.Thiss);
    end;
  end;
end;

end.
работает.

Не могу понять, где теряется ссылка...
В каких моментах она теряется?
Больше с ListItem.Data для этого списка, нигде не работаю...

Что имелось ввиду под удалённым обьектом?

Последний раз редактировалось Человек_Борща; 23.10.2011 в 23:01.
Человек_Борща вне форума Ответить с цитированием
Старый 23.10.2011, 23:29   #14
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Что имелось ввиду под удалённым обьектом?
Метод Free выполнен для объекта после записи ссылки на него в Data. А до первого AddRecord листвью был очищен?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.10.2011, 23:42   #15
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,430
По умолчанию

Хм, действительно. в процедуре сортировки, LV очищается и перезаполняется.
Вот там-то, я и забыл переткнуть LI.Data.

Вопрос исчерпан.

Жаль + можно одын раз поставить =(
Очень помогли.
Человек_Борща вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TListView перемещиение(вверх-вниз) элементов списка Человек_Борща Общие вопросы Delphi 11 05.02.2012 18:51
Плагин для Windows или действия с контекстным меню при выборе опр. типа файла Человек_Борща Общие вопросы Delphi 7 02.10.2011 21:09
TListView+AlphaControls+CustomDrawI tem - баг при отрисовке. XerSon Общие вопросы Delphi 9 09.03.2011 12:36
Закрытие окна при нажатии опр. клавиши на клавиатуре. Borgond Общие вопросы Delphi 6 25.08.2010 01:14
Отбор при отображении winson БД в Delphi 1 18.05.2009 17:04