Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.05;
Скачать: CL | DM;

Вниз

TreeView   Найти похожие ветки 

 
Plt   (2004-02-23 13:16) [0]

B TreeView заполняю свойство Data:
TreeView.Items.AddObject(TTreeNode, S, Ptr).
Как правильно особождать память выделенную под структуру Ptr. По определенным обстоятельствам нельзя использовать событие OnClose.


 
-= Iton =- ©   (2004-02-23 13:58) [1]

Free


 
-= Iton =- ©   (2004-02-23 13:58) [2]

Free


 
Гаврила   (2004-02-23 14:05) [3]

это рекорд ?
тогда Dispose от типизированого указателя
повесть следует на Treeview.OnDeletion


 
Plt   (2004-02-23 14:07) [4]

Я делаю так:
procedure TMnForm.ClearMenuData;
var
i : integer;
begin
for i := 0 to DupView.Items.Count -1 do
begin
Dispose(DupView.Items[i].Data);
end;
end;

В OnClose обработать не могу, вызываю ClearMenuData в OnDestroy.
Но DupView.Items уже пусты. Может отдельно содать TList и с ним работать?


 
Гаврила   (2004-02-23 14:09) [5]

procedure TForm1.TreeView1Deletion(Sender: TObject; Node: TTreeNode);
var
P: PmyRecord
begin
P:= Node.data;
dispose(P);
end;


 
Plt   (2004-02-23 14:48) [6]

Я делаю так:
procedure TMnForm.ClearMenuData;
var
i : integer;
begin
for i := 0 to DupView.Items.Count -1 do
begin
Dispose(DupView.Items[i].Data);
end;
end;

В OnClose обработать не могу, вызываю ClearMenuData в OnDestroy.
Но DupView.Items уже пусты. Может отдельно содать TList и с ним работать?


 
icWasya ©   (2004-02-24 16:51) [7]

у TTreeView есть событие OnDeletion типа
procedure(Sender: TObject; Node: TTreeNode) of object;

вот там и всё это делать


 
Тимохов ©   (2004-02-24 16:56) [8]


> Plt (23.02.04 14:48) [6]


> Dispose(DupView.Items[i].Data);

Если у тебя это указатель на завись, содержащую строки или дин массивы, то так делать нельзя. Будет утечка памяти.


 
Гаврила   (2004-02-24 17:09) [9]

>>Тимохов © (24.02.04 16:56) [8]
Не согласен. Компилятор вызовет Finalize перед освобождением. Вот если освобождать с помощью FreeMem, то другое дело, будет утечка


 
Тимохов ©   (2004-02-24 17:11) [10]


> Гаврила (24.02.04 17:09) [9]

Не спорьте. Данная ошибка весьма типичка - нетипизированные указатели (data же нетипизированный) так освобождать нельзя.
Проверьте.



Страницы: 1 вся ветка

Текущий архив: 2004.03.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
7-12556
Boroda Oleg
2003-12-05 12:10
2004.03.05
Как запретить windows переход в полноэкранный режим?


6-12471
Novenkij
2003-11-24 13:52
2004.03.05
Как узнать работает ли машина ?


1-12318
Pa5ha
2004-02-18 18:28
2004.03.05
ListBox


4-12589
Vemer
2003-12-25 20:44
2004.03.05
Почему не работает данный код


8-12461
Rog
2003-11-01 08:11
2004.03.05
недостаточно ресурсов для обработки команды