Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Phantom1,
3. Jul 2007
Ich denke mal du gibts irgendwo vorher schon ein TImageEnVect-objekt mit FInnerlist.Items.free, aber vergisst diesen itemeintrag auch aus der TList zu löschen mit FInnerlist.delete(i).
bsp:
du hast 4 objekte in der TList:
Finnerlist.Items
Finnerlist.Items
Finnerlist.Items
Finnerlist.Items
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Phantom1,
3. Jul 2007
Ja, aber Luckie gibt ja die Objekte direkt frei, von daher gibt es keine speicherlecks:
procedure TPageCollection.Clear;
var
i: Integer;
begin
for i := FInnerList.Count - 1 downto 0 do
begin
TObject(FInnerList.Items).Free;
end;
FInnerList.Clear;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Phantom1,
3. Jul 2007
Speicherlecks dürfte es eigentlich nicht geben, da ja beim TList.destroy auch die clear methode immer aufgerufen wird.
Ich empfehle aber trotzdem FInnerList.Clear in deiner TPageCollection.clear methode aufzurufen.
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Phantom1,
3. Jul 2007
Könnte es sein das:
Page.ObjUserData := Source.Items.ObjUserData;
evtl so aussehen muss?:
Page.ObjUserData := Source.Items.ObjUserData;
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Phantom1,
3. Jul 2007
@Luckie: könntest du mal die deklaration von TPageCollection posten?
Forum: GUI-Design mit VCL / FireMonkey / Common Controls
by Phantom1,
3. Jul 2007
@hoika: ein FInnerList.Clear reicht auch aus um alle Listeneinträge der TList zu entfernen, das hat Luckie auch gemacht (allerdings ist der code bei ihm auskommentiert).
procedure TPageCollection.Clear;
var
i: Integer;
begin
for i := FInnerList.Count - 1 downto 0 do
begin
TObject(FInnerList.Items).Free;
end;