![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TListItem [D7]
Tonich © (2005-08-09 16:09:00)Ща попробую объяснить чего мне надо)))
создаю
TLVIntemInfo = record
PageNumber:Integer;
SubPageNUmber:Integer;
end;
и указатель на него
PLVIntemInfo =^TLVIntemInfo;
потом начить так
ListItem:TListItem;
SubTransList: TsListView;
Itemdata:PLVIntemInfo
New(Itemdata); // может надо в цикл внести
while not Money_MD.Eof do
begin
ListItem := SubTransList.Items.Add;
Itemdata - ну тут заполняем
ListItem.Data := Pointer(Itemdata); //
ListItem.Caption := 'bla bla bla';
Money_MD.Next;
end;
Dispose(Itemdata); // может надо в цикл внести
а когда уже кликаю на ListView и пытаюсь прочитать Data
New(Itemdata);
Itemdata := PLVIntemInfo(ListView.Selected.data)
Dispose(Itemdata);
читает какуето херню...
может кто просветит, что не правильно а?
begin...end (2005-08-09 17:13:00) [1]> Tonich © (09.08.05 17:07) [9]
> но вот написал я не все, в том рекорде вероятнее всего будут
> еще стринговые поля
Ну тогда только New/Dispose.
Tonich (2005-08-09 17:07:00) [2]
> begin...end © (09.08.05 17:01) [8]
не ну это понятно если если смотреть на то что я написал)))
но вот написал я не все, в том рекорде вероятнее всего будут еще стринговые поля
и еще точно одно поле (число записей в memory dataset), а вот сколько там будет записей только одному пользователю и извесно
а вообщето.....
нодо подумать пасибочки
begin...end (2005-08-09 17:01:00) [3]> Tonich © (09.08.05 16:09)
> TLVIntemInfo = record
> PageNumber:Integer;
> SubPageNUmber:Integer;
> end
PageNumber и SubPageNumber могут в каком диапазоне изменяться? А то ведь, если это небольшие числа, можно и без всяких New/Dispose обойтись.
Tonich (2005-08-09 16:43:00) [4]
> Гаврила ©
)))))) все просветили)))
ты таки был прав насчет
> Dispose вызывать при удалении итема ил ListView
Tonich (2005-08-09 16:33:00) [5]а понял что ты имел ввиду)))
начить после
> Itemdata := PLVIntemInfo(ListView.Selected.data)
анализирую полученные данные, после чего мне уже этот указатель не нужет и после Dispose(Itemdata);
или я опять не понял чего ты хотел сказать..
Гаврила (2005-08-09 16:28:00) [6]
> [4] Tonich ©
Полная каша.
Короче
> это код
> New(Itemdata);
Выделяем 8 байт в куче и запоминаем указатель в Itemdata
> Itemdata := PLVIntemInfo(ListView.Selected.data)
переприсваиваем указатель на то ,что было в ListView.Selected.data
(выделенный только что блок потерян)
> Dispose(Itemdata);
освобождаем блок ,указатель на который находился до этого в ListView.Selected.data
все должно валиться с треском при нескольких обращениях
Tonich (2005-08-09 16:24:00) [7]
> Гаврила © (09.08.05 16:22) [3]
это код
>
> New(Itemdata);
> Itemdata := PLVIntemInfo(ListView.Selected.data)
> Dispose(Itemdata);
написан в другой процедуре
Гаврила (2005-08-09 16:22:00) [8]while not Money_MD.Eof do
begin
ListItem := SubTransList.Items.Add;
New(Itemdata); // может надо в цикл внести
Itemdata - ну тут заполняем
ListItem.Data := Pointer(Itemdata); //
ListItem.Caption := 'bla bla bla';
Money_MD.Next;
end;
> а когда уже кликаю на ListView и пытаюсь прочитать Data
//New(Itemdata);
Itemdata := PLVIntemInfo(ListView.Selected.data)
//Dispose(Itemdata);
Dispose вызывать при удалении итема ил ListView
Tonich (2005-08-09 16:14:00) [9]
> Ega23 © (09.08.05 16:13) [1]
как зачем , для распределения структуры в куче, я указатель создал и использую его
Ega23 (2005-08-09 16:13:00) [10]New(Itemdata);
Зачем?