AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Dynamisches Array oder 2fach verkettete dynamische Liste?
Thema durchsuchen
Ansicht
Themen-Optionen

Dynamisches Array oder 2fach verkettete dynamische Liste?

Ein Thema von mika · begonnen am 27. Nov 2002 · letzter Beitrag vom 29. Nov 2002
Antwort Antwort
Benutzerbild von mika
mika

Registriert seit: 25. Okt 2002
176 Beiträge
 
Delphi 6 Professional
 
#1

Dynamisches Array oder 2fach verkettete dynamische Liste?

  Alt 27. Nov 2002, 09:51
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.
:: don't Panic ::
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2
  Alt 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.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3
  Alt 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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von mika
mika

Registriert seit: 25. Okt 2002
176 Beiträge
 
Delphi 6 Professional
 
#4

Arrays??

  Alt 29. Nov 2002, 10:20
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.
:: don't Panic ::
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:16 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