Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dynamisches Array oder 2fach verkettete dynamische Liste? (https://www.delphipraxis.net/1444-dynamisches-array-oder-2fach-verkettete-dynamische-liste.html)

mika 27. Nov 2002 09:51


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.

Daniel 28. Nov 2002 18:50

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:

Christian Seehase 28. Nov 2002 19:16

Moin Mika,

wenn Du ein dynamisches Array vergrösserst kann es gut sein, dass sich die Adressen der Einträge verschieben.

mika 29. Nov 2002 10:20

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 14:47 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