Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 TreeView и AddChildObject  [new]
bzums
Member

Откуда:
Сообщений: 108
В каждый Node своего TreeView добавил посредством AddChildObject в том числе и длинную строку в Data (pointer на стринг переменную).

Как мне оттуда прочитать теперь при перетаскивании нода в Мемо?
Нод (b lfyyst) доступys как TreeView.Selected.data

Что там находится строка, мне известно. Но как вытащить?
3 апр 21, 18:50    [22303867]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

bzums
Как мне оттуда прочитать теперь при перетаскивании нода в Мемо?

Уже никак. Указатель, который ты туда запихал, давно стал мусором.

Posted via ActualForum NNTP Server 1.5

3 апр 21, 19:00    [22303877]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
bzums
Member

Откуда:
Сообщений: 108
Я неправильно выразился.
В поле дата - строковое значение.
Просто метод AddChildObject последним параметром просит пойнтер на объект.

Как теперь достать оттуда то, что находится в Data (для каждого узла)?

Спасибо.
3 апр 21, 19:24    [22303886]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

Повторяю медленно: уже никак, поскольку внесённый указатель давно указывает на уже
освобождённою область памяти. Попытка что-либо оттуда достать в лучшем случае принесёт
случайный мусор, в худшем - вызовет краш приложения.

Posted via ActualForum NNTP Server 1.5

3 апр 21, 19:27    [22303887]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
bzums
Member

Откуда:
Сообщений: 108
А для каких целей данный метод тогда нужен?

И куда я могу записать какое то втрое значение текстовое для дерева? То есть отличное от названия узла.
Спасибо.
3 апр 21, 19:38    [22303889]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 52921

bzums
А для каких целей данный метод тогда нужен?

Для хранения указателя на структуру, которая не исчезнет за всё время его использования.
Почитайте уже основы работы с динамической памятью и указателями.

Posted via ActualForum NNTP Server 1.5

3 апр 21, 20:20    [22303903]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
DimaBr
Member

Откуда:
Сообщений: 12043
Картинка с другого сайта.
3 апр 21, 20:29    [22303906]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
bzums
Member

Откуда:
Сообщений: 108
Спасибо вам, добрые люди.
У меня реально чуть кровь из носа не пошла от напряга.



автор
Для хранения указателя на структуру, которая не исчезнет за всё время его использования

А что если я всё-таки завел глобальный пойнтер, глобальную строковую переменную. Т.е. они живы, пока программа жива.
И как мне это оттуда достать?
Я понимаю, что это делать не стоит ( спасибо огромное за пример , как это надо делать ).
Чисто теоретический вопрос.

Теорию прочитал.
Вроде понятно.

Ещё раз большое спасибо.
3 апр 21, 20:54    [22303916]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
Cobalt747
Member

Откуда:
Сообщений: 2300
bzums
А что если я всё-таки завел глобальный пойнтер, глобальную строковую переменную. Т.е. они живы, пока программа жива.
И как мне это оттуда достать?

Как засунул - так и достаёшь.

По мне - безопаснее сделать список элементов (или словарик), где хранить нужные данные

А при добавлении узла в указатель пихать какой-нить nativeInt в качестве индекса из этого списка
вот так:
AddChildObject(ParentNode, NodeCaption, TObject(DataIndex));
4 апр 21, 00:11    [22303976]     Ответить | Цитировать Сообщить модератору
 Re: TreeView и AddChildObject  [new]
bzums
Member

Откуда:
Сообщений: 108
Спасибо всем большое ещё раз.
4 апр 21, 00:16    [22303978]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить