Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Хранение record в ListView.Item.Data 
V
    Опции темы
mistrmax
Дата 10.3.2012, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Здравствуйте, подскажите пожалуйста как в ListView.Items.Item[ItemIndex].Data правильно хранить record и обращаться к данным в нём хранящимся?
PM   Вверх
Чучмек
Дата 10.3.2012, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Код

type
pmytype=^mytype
mytype=...
...
var varpmytype:pmytype;


new(varpmytype);
TreeView.Items[i].Data:=varpmytype;


pmytype(TreeView.Items[i].Data)^.............




--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
mistrmax
Дата 10.3.2012, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Чучмек, спасибо. Теперь уже прога не вылетает даже. Но у меня остался вопрос. А как присваивать значение параметрам этого record?
Можно ли так?
Код

type
pmytype=^mytype;
mytype=record
   someparam: string;
end;

var varpmytype:pmytype;

new(varpmytype);
varpmytype.someparam := 'string'; //???
TreeView.Items[i].Data:=varpmytype;
pmytype(TreeView.Items[i].Data)^.


Это сообщение отредактировал(а) mistrmax - 10.3.2012, 21:38
PM   Вверх
Чучмек
Дата 10.3.2012, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Да,так.
Код

pmytype(TreeView.Items[i].Data)^.p1:=...;
pmytype(TreeView.Items[i].Data)^.p2:=...;
....

Но лучше, если присваиваешь больше одного значения, так:
Код

var dfgdfg:pmytype;
...
dfgdfg:=TreeView.Items[i].Data;
dfgdfg^.p1:=...;
dfgdfg^.p2:=...;



--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
northener
Дата 10.3.2012, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(mistrmax @  10.3.2012,  21:23 Найти цитируемый пост)
varpmytype.someparam := 'string'; //???

Нужно разыменовать указатель 
Код

varpmytype^.someparam := 'string';



--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Чучмек
Дата 10.3.2012, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Цитата(northener @  10.3.2012,  21:41 Найти цитируемый пост)
Нужно разыменовать указатель

Нужно, но Delphi,при таком обращении,выполняет неявное разыменование.


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
mistrmax
Дата 10.3.2012, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 77
Регистрация: 30.5.2010

Репутация: нет
Всего: нет



Спасибо огромное. На всякий случай буду разыменовывать явно, чтобы не запутаться. Всё заработало. Тема закрыта.
PM   Вверх
Чучмек
Дата 10.3.2012, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЭТ БИЛЭТ
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 11.5.2008
Где: СССР

Репутация: 7
Всего: 41



Есть еще одно но.
Если ты выделяешь память под указатель, то в конце ее необходимо освободить.
Dispose 


--------------------
умную мысль держи при себе, а дурной - поделись с другими 
PM MAIL   Вверх
northener
Дата 10.3.2012, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Чучмек @  10.3.2012,  21:44 Найти цитируемый пост)
Нужно, но Delphi,при таком обращении,выполняет неявное разыменование. 

Зависит от версии Дельфи.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0932 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.