Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Objects in Listbox plötzlich initialisiert, wie vermeiden? (https://www.delphipraxis.net/109097-objects-listbox-ploetzlich-initialisiert-wie-vermeiden.html)

GreenHorn3600 24. Feb 2008 14:13


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:
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;
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.

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

Muetze1 24. Feb 2008 14:34

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 17:01 Uhr.

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