Ошибка при удалении обьекта. Delphi

Привет ALL!
Имееться класс:
TLPoint=class (Tlabel)
public
a,b:double;
l:Tlist;
. . .
constructor Create(com:Tcomponent); override;
destructor Destroy;
. . .
end;
constructor TLPoint.Create(com:Tcomponent);
begin
inherited create(com);
bmp:=Tbitmap.Create;
l:=Tlist.Create;
end;
destructor TLPoint.Destroy;
var
i:integer;
begin
inherited Destroy;
bmp.Free;
for i:= 0 to l.Count-1 do
FreeMem(l.Items[i]);
l.Destroy;
end;
В самой программе выполняеться что-то вроде:
var
ListP:Tlist; {Глобальная, в модуле Unit1}
procedure ADD; {Unit1}
var
Lpoint:TLpoint;
begin
Lpoint:=Tlpoint.create(self);
Lpoint.Parant:=form1;
....
ListP.add(Lpoint);
end;
procedure ADD; {Unit2}
var
Lpoint:TLpoint;
begin
Lpoint:=Tlpoint.create(self);
Lpoint.Parant:=form2;
....
ListP.add(Lpoint);
end;
procedure Tform1.DestroyForm(sender:Tobject);
var
i:integer;
begin
for i:= 0 to listP.Count-1 do
begin
TlPoint(listP.Items[i]).Destroy;
end;
listP.Free;
end;
Так вот, если все обьекты созданны и добавленны в Unit1, то всё работает как
надо!!!
Но вот если, хоть один обьект TlPoint создан и добавлен из другого модуля,
то при уничтожении выскакивает куча ошибок обращения к памяти?!
--
В процесси работы пре обращении к обьектам из списка тоже без ошибок
(TlPoint(listP.Items[i].color:=clBlack).
--
Если убрать код Tlpoint.Destroy, то тоже всё ок.
Я вот думаю, моджет вообще обьекты по окончанию работы программы не
уничтожать?
Я слышал, что форточка сама память очистить в состоянии?
Номер выпуска : 3916
Возраст листа : 476 (дней)
Количество подписчиков : 517
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/294131
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru
-*Информационный канал Subscribe.Ru
Подписан адрес:
Код этой рассылки: comp.soft.prog.prog
Написать в лист: mailto:comp.soft.prog.prog-list@subscribe.ru
Отписаться: mailto:comp.soft.prog.prog--unsub@subscribe.ru?subject=comp.soft.prog.prog
http://subscribe.ru/ http://subscribe.ru/feedback
Hello Малышев,
Monday, January 10, 2005, 4:10:58 PM, you wrote:
как
Мне кажется, что-то не так в самом деструкторе списка и наверное в
обработчике уничтожения формы (то есть, в двух последних методах,
которые я оставил в теле письма). Непонятно, почему используется цикл
в деструкторе списка. Разве просто l.Free недостаточно? Тем более, при
создании списка не употреблялось GetMem.
И в DestroyForm тоже сомнителен цикл
По крайней мере, здесь-то уж точно деструктор явно не должен
вызываться.
А что касается самоочистки, то да - есть такое дело. По идее, по
закрытии главного окна приложения, все указатели этого приложения
освобождаются. Но на это можно положиться, если в приложении по ходу
дела не придется перестраевать список.