Форум: "Основная";
Текущий архив: 2003.02.13;
Скачать: [xml.tar.bz2];
Вниз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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c