Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi ComboBox mit unterschiedlichen Objekten - sauber abraeumen? (https://www.delphipraxis.net/87088-combobox-mit-unterschiedlichen-objekten-sauber-abraeumen.html)

OldGrumpy 23. Feb 2007 07:39


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:

mkinzler 23. Feb 2007 07:41

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
.Objects

OldGrumpy 23. Feb 2007 07:49

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.

IngoD7 23. Feb 2007 07:56

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Zitat:

Zitat von OldGrumpy
okay, ich haette dazusagen sollen, dass ein myCombobox.Items.Objects[i].Free zu den erwähnten AVs führt.

Wie und wo machst du es denn (Code)?

OldGrumpy 23. Feb 2007 08:18

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:
procedure TMyForm.FormCreate(Sender: TObject);
Begin
[...]
MyComboBox.items.addObject(menutext, TObject(integer(TMyEffect)));
MyComboBox.items.addObject(menutext2, TObject(integer(TMyEffect2)));
[...]
End;
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.

Abgeraeumt soll das ganze natürlich in TMyForm.FormDestroy (gebunden ans OnDestroy-Event):

Delphi-Quellcode:
procedure TMyForm.FormDestroy(Sender: TObject);
var i: integer;
Begin
[...]
for i:=0 to MyComboBox.Items.Count-1 do MyComboBox.Items.Objects[i].Free;
[...]
End;
So, und nun bin ich mal gespannt, was ich da übersehen hab :)

mkinzler 23. Feb 2007 08:19

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Zitat:

Delphi-Quellcode:
MyComboBox.items.addObject(menutext, TObject(integer(TMyEffect)));

?

ste_ett 23. Feb 2007 08:20

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Hast du auf "<> nil" geprüft? :)

OldGrumpy 23. Feb 2007 08:27

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Zitat:

Zitat von ste_ett
Hast du auf "<> nil" geprüft? :)

Ja, nirgends nil zu sehen. Würde mich auch wundern wenn nach der obigen Zuweisung irgendwo nil drinständ ;)

Zitat:

Zitat von mkinzler
Zitat:

Delphi-Quellcode:
MyComboBox.items.addObject(menutext, TObject(integer(TMyEffect)));

?

Könntest Du bitte im ganzen Satz fragen? Ist noch früh :)

mkinzler 23. Feb 2007 08:32

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) ?

OldGrumpy 23. Feb 2007 08:35

Re: ComboBox mit unterschiedlichen Objekten - sauber abraeum
 
Zitat:

Zitat von mkinzler
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) ?

Das ist nicht mein Code, ich hab das Projekt nur übernommen nachdem der alte Programmierer das Weite gesucht hat ;) Das ganze Paket hat weit über hunderttausend Zeilen Code, ich hab in den drei Tagen jetzt noch nicht allzuviel davon wirklich anschauen können. Was das da soll, kann ich Dir auf Anhieb auch nicht sagen, ich schau mal eben ob sich da was finden lässt das Aufschluss gibt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 Uhr.
Seite 1 von 3  1 23      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz