![]() |
Objects in Listbox plötzlich initialisiert, wie vermeiden?
Hallo Zusammen,
langsam zweifle ich dran, dass ich klar bei Verstand bin. Folgende Methode ist gegeben (die Variable X wurde eingeführt, um den Befehl zu zerlegen).
Delphi-Quellcode:
Beim erstellen der Listbox, werden die Objekte mit Referenz an die Listbox angehängt (ListBox.addItem(Bezeichnung, Objekt). Das funktioniert auch wunderbar. Bei der Iteration über die Listbox, kann auch fein auf das Objekt zugegriffen werden.
procedure tEditData.AssignOrdersListFromListBox(aListBox: tListBox);
var i: integer; foo: tOrder; x: integer; begin fol.Clear; for I := 0 to aListBox.Count - 1 do begin foo := tOrder.Create(fdm.IfConnectionOpen, fdm.connection); //<- Problem! x := tOrder(aListBox.Items.Objects[i]).OrderNum; x := fdm.OrderList.GetIndexOfOrder(x); foo.AssignFrom(fdm.OrderList.Items[x]); fol.Add(foo); end; end; Wenn ich die obige Methode durchlaufe, geschied seltsames. Die Liste FOL (tObjectList), wird von den altlasten bereinigt, im Anschluss daran, sollen die neuen Objekte aus der Listbox, dieser zugeordnet werden. Hierfür wird über die Listbox iteriert. Nach dem Eintritt in die Schleife, weisst das Objekt aListBox.items.object[i] noch wunderbar seinen Inhalt auf. Nach dem erstellen des Temporären Objektes FOO, ist dieser plötzlich NULL. Es scheint so, als ob durch die Initialisiation des Objektes auch das zugehörige ListboxObjekt initialisiert wird. Das kann es doch gar nicht geben, oder? Hat jemand eine Idee an was das liegen könnte, ich bin Ratlos. :gruebel: Danke für euere Hilfe Das GreenHorn |
Re: Objects in Listbox plötzlich initialisiert, wie vermeide
1. Enthält die fol noch Instanzen die zuvor aus der ListBox entnommen wurden? Können die Instanzen auch weiterhin in der Listbox enthalten sein? Wenn ja: Wurde die fol ObjectList im Constructor mit false angelegt? Wenn nicht, dann gibt sie mit Clear alle Instanzen frei und somit auch die in der ListBox.Items.Objects[]
2. Warum wird eine komplette ListBox übergeben anstatt einfach nur das TStrings Objekt? 3. aListBox.Count im Schleifenkopf: Ich wüsste nicht, dass ListBox einen Count auf der Ebene bietet. Es müsste eigentlich aListBox.Items.Count sein. Oder halt Punkt 2 umsetzen, dann würde es stimmen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:20 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