Версия для печати
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум на Исходниках.RU > Delphi: Общие вопросы > TTreeNode и свойство Data


Автор: newkaz 09.10.18, 10:04
Всем добрый день!
При работе с TTreeView возник такой вопрос: как правильно очистить Data при удалении узла? Я делаю так:
<{CODE_COLLAPSE_OFF}><{CODE_WRAP_OFF}>
    type
      TPRecData = ^TRecordData;
      TRecordData = record
        cIndex: String[4];
        cQuant: String[4];
        cTMark: String[69];
        cNote: String[90];
        cSS: String[6];
    --------------------------
    var recData: TPRecData;
    --------------------------
    Создаю переменную и присваиваю её значение свойству Data.
      New(recData);
      recData^.cIndex:=cIndexRead;
      recData^.cQuant:=cQuantRead;
      recData^.cTMark:=cTMarkRead;
      recData^.cNote:=cNoteRead;
      recData^.cSS:=cSSRead;
      tvNode.Data:=recData;
    --------------------------
    При удалении узла или при закрытии формы отрабатывает событие OnDeletion, в котором прописано:
      Dispose(TPRecData(Node.Data));

Но значение Node.Data после этого не меняется.

Автор: MBo 09.10.18, 11:01
Dispose и не должно изменять указатель, его дело только освободить память.
А вот место, на которое указывает указатель, объявлено свободным, и обращаться к нему не стоит.

Автор: newkaz 09.10.18, 12:17
Т.е.у меня всё корректно сделано?

Автор: MBo 10.10.18, 02:12
Да

Автор: newkaz 10.10.18, 05:11
:thanks:

Powered by Invision Power Board (https://www.invisionboard.com)
© Invision Power Services (https://www.invisionpower.com)