1. Wenn New(), dann bitte auch Dispose()
2. Dispose() sollte mit dem richtigen Typ aufgerufen werden.
3. Wozu gerade Clear überschreiben? Wenn ein Eintrag aus der Liste gelöscht wird, dann wird dieser nicht freigegeben!
4. Es gibt bei TList nicht umsonst ein Notify im protected Abschnitt (damit ist Punkt 3 auch erledigt):
Delphi-Quellcode:
Procedure TRectList.Notify(Ptr: Pointer; Action: TListNotification);
Begin
If ( Action = lnDelete ) Then
Dispose(PRect(Ptr));
Inherited;
End;