Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

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);
Зачем?


Наверх

Титульная страница Поиск, карта сайта Написать письмо