![]() |
ComboBox mit unterschiedlichen Objekten - sauber abraeumen?
Hallo zusammen,
ich hab mal wieder ein übles Stückchen Software vor mir. Momentan habe ich da eine Combobox, der mittels AddObject() neben den einzelnen Strings auch unterschiedliche zugehörige Objekte (fragt mich nicht warum, dazu komme ich erst später, erstmal muss ich die drei Millionen Speicherlecks beheben...) zugewiesen werden. Wenn die Combobox später abgeräumt wird, muss ich natürlich diese Objekte auch einzeln wieder freigeben, nur wie komme ich da ran? Entweder bin ich zu doof die OH zu verstehen oder ich seh den Wald vor lauter Bäumen nicht. Bei meinen bisherigen Experimenten bin ich noch nicht über diverse Access Violations hinausgekommen... Auch die Suche hier im Forum war nicht wirklich erleuchtend, kann mir mal jemand bitte einen Schubs in die richtige Richtung geben? :) Herzlichen Dank schonmal im Voraus :mrgreen: |
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
.Objects
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
okay, ich haette dazusagen sollen, dass ein myCombobox.Items.Objects[i].Free zu den erwähnten AVs führt.
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Zitat:
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Wo ist mein Kaffee... bin noch nicht ganz wach, das Projekt das ich hier übernommen hab ist echt schlimm. Ich hab in den letzten Tagen sicherlich fuenfhundertmal TList.Create gesehen, gefolgt von diversen Zuweisungen von Objekten in die Liste und danach ein einfaches TList.Free - ohne vorher die Objekte abzuraeumen. Das Logfile von FastMM4 war 1,9 MB gross :shock: und inzwischen bin ich auf 450kb runter ;)
Also, befüllt wird die Combobox in MyForm.FormCreate (gebunden ans OnCreate-Event):
Delphi-Quellcode:
menutext und menutext2 sind Strings, und wo ichs jetzt paste wundere ich mich, was das mit dem TMyEffect usw. soll - TMyEffect und Konsorten sind Klassendefinitionen.
procedure TMyForm.FormCreate(Sender: TObject);
Begin [...] MyComboBox.items.addObject(menutext, TObject(integer(TMyEffect))); MyComboBox.items.addObject(menutext2, TObject(integer(TMyEffect2))); [...] End; Abgeraeumt soll das ganze natürlich in TMyForm.FormDestroy (gebunden ans OnDestroy-Event):
Delphi-Quellcode:
So, und nun bin ich mal gespannt, was ich da übersehen hab :)
procedure TMyForm.FormDestroy(Sender: TObject);
var i: integer; Begin [...] for i:=0 to MyComboBox.Items.Count-1 do MyComboBox.Items.Objects[i].Free; [...] End; |
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Zitat:
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Hast du auf "<> nil" geprüft? :)
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Zitat:
Zitat:
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Warum versuchst du eine Referenz(Zeiger) auf ein Objekt zuerst in einene Integer und dann in ein TObject zu casten (jedes Objekt ist schon ein TObject) ?
|
Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz