Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
8. Feb 2015
Und selbst wenn Vieles inzwischen automatisch freigegeben wird.
Früher gab es in Windows nur einen großen Arbeitsspeicher, in dem alle Programme rumschrieben.
Die Nachteile kennen wir:
Ein Speicherleck im Programm blieb für immer bestehen, auch nach Ende des Programms.
Ein Buffer-Overflow konnte nicht nur eigenen Speicher zerstören, sondern auch den von anderen Programmen oder gar vom...
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Feb 2015
Nja. Dafür gibt es so eine Methode weniger. :oops:
Aber mal ganz im Ernst, nun weil das nicht virtuell ist, haben die in TObjectList alle drei Konstructoren überschreiben müssen, obwohl es gereicht hätte, das Neue im nur Create() zu machen, da in den anderen zwei Konstructoren nichts anderes drin steht.
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
7. Feb 2015
type
TComponentList<T: TComponent> = class(TObjectList<T>)
private type
TNotify = class(TComponent)
FParent: TComponentList<T>;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
end;
private
FNotify: TNotify;
protected
Forum: Object-Pascal / Delphi-Language
Delphi
by himitsu,
6. Feb 2015
Wenn die Objekte nachfahren von TComponent sind, dann kann man deren Messagesystem benutzen und das Objekt sich selber aus der Liste löschen lassen, wenn es freigegeben wird.
Quasi eine TComponentList mit AutoRemove.
Ab XE wäre das auch für alle anderen Nicht-TComponents relativ leicht möglich und davor bissl schwerer, aber ist nicht wirklich schön, sowas umzusetzen.