Forum: Object-Pascal / Delphi-Language
Delphi
by jaenicke,
9. Feb 2015
Dafür gibt es auch spezielle Tools wie dieses:
http://ddobjects.de/dddebug
Solange du aber die Objekterzeugung und -freigabe nicht sauber umsetzt, wird dir das nicht furchtbar viel helfen fürchte ich.
Forum: Object-Pascal / Delphi-Language
Delphi
by jaenicke,
8. Feb 2015
Das stimmt so nicht. Wenn Systemressourcen reserviert wurden, werden zwar die meisten auch automatisch aufgeräumt, aber nicht alle. In einem solchen Fall war es dann so, dass das Programm zwar problemlos ein paarmal lief, aber nach dem etwa 30. Durchlauf das Betriebssystem (in dem Fall XP) insgesamt nicht mehr richtig reagierte...
Mit Vista und Windows 7 hat sich da zwar einiges getan, aber ganz...
Forum: Object-Pascal / Delphi-Language
Delphi
by jaenicke,
7. Feb 2015
Das Aufräumen sollte immer dort passieren, wo das Objekt auch erstellt wurde. Wenn du eine TStringList im Konstruktor eines Objekts erstellst, sollte diese auch im Destruktor freigegeben werden. Sprich das Objekt, zu dem die Liste gehört, ist auch dafür verantwortlich. Natürlich musst das Objekt, das die Liste enthält, z.B. das Formular, auch freigegeben werden, damit das funktioniert. Und so...
Forum: Object-Pascal / Delphi-Language
Delphi
by jaenicke,
7. Feb 2015
Da hätte noch viel mehr virtuell deklariert werden müssen, auch bei den anderen generischen Standardklassen...
Ich überschreibe in so einem Fall meistens AfterConstruction und BeforeDestruction, was ja seit Delphi 4 für diesen Zweck existiert (wenn etwas nicht im Konstruktor gemacht werden kann)...
// EDIT:
Ja, genau... ich hatte die Antwortbox dank meines Sohnes wohl etwas zu lange offen. :D
Forum: Object-Pascal / Delphi-Language
Delphi
by jaenicke,
6. Feb 2015
Wenn du anderswo ein entsprechendes eigenes Objekt zum Freigeben benötigst, kannst du ja eine Kopie erstellen. Alles andere wäre nicht sauber.
Eine mögliche Alternative wären Interfaces.