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

Вниз

Tree.AddChildObject имеет параметр Ptr, как освободить память?   Найти похожие ветки 

 
Тип   (2003-02-05 12:40) [0]

Мастера , хелп ми...
Из хелпа узнаем:
The memory referenced by Ptr is not freed when the tree nodes object is freed.
Как освободить память я не знаю... А то програ после 10-20 запусков гворит Access violation....
Как бороть?


 
Тип(Мастера, ау)   (2003-02-05 13:09) [1]

Ну кто-нибудь может помочь?


 
icWasya ©   (2003-02-05 13:54) [2]

Tree.OnDeletion-


procedure TForm1.Tree1OnDeletion(Sender: TObject; Node: TTreeNode);
begin
if Node.Data <>Nil then
........;
end;



 
Тип   (2003-02-05 14:43) [3]

2 icWasya ©
Вместо ...
написал
Node.Free;

Но теперь выскакивает Stack overflow....



 
Skier ©   (2003-02-05 14:47) [4]

>Тип

> Вместо ...
> написал
> Node.Free;


!!!???

Напиши
Dispose(Node.Data) или FreeMem(Node.Data)
(It depends)


 
Тип   (2003-02-05 15:02) [5]

2 Skier ©
Я ламер(пока еще) , извини если вызвал бурные эмоции, но
на Dispose(Node.Data) или FreeMem(Node.Data) ругается Access violation...

Я написал Node.Data := nil вроде работает.


 
Skier ©   (2003-02-05 15:03) [6]

>Тип
Ну да, ну да...
Короче вот так, примерно :

procedure TForm1.Tree1OnDeletion(Sender: TObject; Node: TTreeNode);
begin
if Node.Data <> Nil then
Dispose(Node.Data); //или FreeMem(Node.Data)
Node.Data := nil;
end; //if
end;



 
Skier ©   (2003-02-05 15:09) [7]

>Тип
Кстати, тебе нужно будет обязательно написать
освобождения данных для узлов в деструкторе формы или в обработчике TYourForm.OnDestroy иначе память при каждом уничтожении формы будет течь...


 
Тип   (2003-02-05 15:09) [8]

ругается Access violation...


 
Skier ©   (2003-02-05 15:12) [9]

Гадание на кофейной гуще...
Код для модуля формы !


 
Тип   (2003-02-05 15:12) [10]



> 2 Skier © (05.02.03 15:09)> >Тип
> Кстати, тебе нужно будет обязательно написать
> освобождения данных для узлов


А в OnDeletion , что разве не освобождение?

Access violation... возникает, когда я делаю Tree.Items.clear...



 
Тип   (2003-02-05 15:13) [11]


> Skier © (05.02.03 15:12)
> Гадание на кофейной гуще...
> Код для модуля формы !


Ввесь? да там много...


 
Романов Р.В. ©   (2003-02-05 15:14) [12]

Тип, что у тебя хранится в Data если не секрет?


 
Тип   (2003-02-05 15:19) [13]

2 Романов Р.В. ©
Данные из БД. Я строю дерево на основе БД, вот как я добавляю:
TempNode:=AddChildObject(Node , FieldByName("NAME_OPERATION").AsString, Pointer(FieldByName("ID_OPERATION").AsInteger));


 
Skier ©   (2003-02-05 15:23) [14]

type
PInteger = ^Integer;
var
AInt : PInteger;
begin
//.............
New(AInt);
AInt^ := FieldByName("ID_OPERATION").AsInteger;
TempNode:=AddChildObject(Node , FieldByName("NAME_OPERATION").AsString, AInt);
//................

//.............................
procedure TForm1.Tree1OnDeletion(Sender: TObject; Node: TTreeNode);
begin
if Node.Data <> Nil then
Dispose(Node.Data);
Node.Data := nil;
end; //if
end;

//.............................


 
Романов Р.В. ©   (2003-02-05 15:26) [15]

Тут ничего удалять не надо. Само рассосется.


 
Тип   (2003-02-05 15:36) [16]

2 Романов Р.В. ©
Ну почему тогда ошибка при удалении?


 
Тип   (2003-02-05 15:39) [17]

2 Skier ©
Не помогло, теперь детей не показывает, и ошибку выдает.
И , кстати, у тебя два end в конце, а begin один...


 
Skier ©   (2003-02-05 15:41) [18]

>Тип

> И , кстати, у тебя два end в конце, а begin один...

I"m done !


 
Тип   (2003-02-05 15:47) [19]

Ну с ошибкой вроде покончил, так теперь получается у меня в Data хранится не понятно что, так как детей не показывает...


 
Романов Р.В. ©   (2003-02-05 15:53) [20]


> Тип (05.02.03 15:36)
> 2 Романов Р.В. ©
> Ну почему тогда ошибка при удалении?

Хтож ее знает.


 
Тип(Мастера, ау)   (2003-02-05 17:20) [21]

Блин, ну как же быть, работа стоит... Помогите, плиз...



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

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

Наверх




Память: 0.51 MB
Время: 0.012 c
3-38061
cranium
2003-01-27 00:57
2003.02.13
Руссификация сообщений сервера об ошибках.....


1-38204
SeNtiMeL
2003-02-02 01:45
2003.02.13
позиция текста в RichEdit !


1-38217
Alex Y
2003-02-05 08:13
2003.02.13
try ... except


1-38326
ZeaLoT
2003-02-03 16:48
2003.02.13
Интерпретатор, структуры данных.


1-38191
Hekko
2003-02-04 22:11
2003.02.13
Расположение динамического массива в памяти