![]() |
Dynamisches Array oder 2fach verkettete dynamische Liste?
Hallo,
ich arbeite öfter mit Objekte und Informationen deren Anzahl ich beim compilieren nicht kenne. Nun habe ich unter Delphi mir angewöhnt das Konstrukt: "Array Of Variablentyp" zu benutzen und mit SetLength zu arbeiten. Aber mir ist jetzt eine komische Sache aufgefallen. Bsp.: Ich benutze einen Treeview um beispielsweise einen Kundenstamm anzuzeigen: Kunde: 00001 +- Name +- Vorname +- Strasse ... Kunde: 00002 +- Name +- Vorname +- Strasse ... ... nun hinterlege ich in den einzelnen punkten in der eigenschaft Data einen Pointer auf ein Objekt in meinem Dynmischen Array { Record Info Name : String Vorname : String Strasse : String ... und weitere informationen End; myInfo : Array of Info; } mit Node.Data := @myInfo[10]; wenn ich nun den treeview und das array gleichzeitig erstelle und mit werten fülle in meiner schleife werden die alten pointer der treenods ungültig und zeigen nicht mehr auf die richtige stelle, nachdem ich mit SetLength( Array, length(Array) + 1) ein neues objekt in mein Array kopiert habe. Liege ich in diesem Punkt falsch oder mache ich einfach einen Fehler beim dyn. Array. Oder sollte ich doch lieber eine 2fach verkette dynamische Liste erstellen dessen verhalten im Speicher ich selbst kontrolliere/verwalte? Ratlos, Ratlos. Vielleicht wisst Ihr ja mehr. Mfg, Michael. |
Hallo mika,
hast Du Dich mal an der Klasse TList versucht? Da musst Du nur noch den Speicher für jeden einzelnen Eintrag einmal reservieren und gegen Ende wieder einmal freigeben. Das Hinzufügen geht per 'add' und das Löschen per 'delete' - also insgesamt relativ simpel. Vielleicht kommst Du damit ja weiter. :wink: |
Moin Mika,
wenn Du ein dynamisches Array vergrösserst kann es gut sein, dass sich die Adressen der Einträge verschieben. |
Arrays??
Hallo und danke für die Antworten, also hatte ich recht damit
das sich die Adressen verschieben? das ist ja nicht so schön, naja ich habe jetzt zur lösung erst einmal ein paar extra infos in meinem record gespeichert und mache die zuweisung auf die adresse erst wenn ich alle visuellen einträge erstellt habe, was aber auch nicht der weisheit letzter schluss ist. ich werde mir aber jetzt auch mal TList zu Herzen nehmen, vielleicht hat das ja alle Eigenschaften die ich brauche. Danke für alle Tips. mfg, Michael. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:06 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 by Thomas Breitkreuz