Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dynamisches Array erzeugen (https://www.delphipraxis.net/2383-dynamisches-array-erzeugen.html)

Chewie 21. Jan 2003 12:58

Hm, seltsam, ich dachte, es wäre umgekehrt. Zugegeben, ich kenne C++ nur sehr oberflächlich und hab noch nie Code darin geschrieben, aber soweit ich weiß, sind dyn. Arrays in C++ nur insoweit dynamisch, als dass zur Laufzeit die Größe bei der Instantiierung beliebig festgelegt werden kann. Danach ist Schluss. Hier könnt ihr micg aber gerne eines Besseren belehren, da ich wie gesgt, noch kaum Umgamg mit C++ hatte.
Bei ObjektPascal sieht das aber anders aus. Da gibt es eine schöne Funktion namens SetLength, die nicht nur für Strings, sondern auch für dyn. Arrays gillt. Und man kann sie nicht nur beim Erstellen des Arrays aufrufen, sondern so oft wie man will. Und das Tollste ist, dass die Daten im Array innerhalb der neuen Größe erhalten bleiben. Also entweder sprecht ihr von einer anderen Sprache oder ich träumte die letzten zwei, drei Jahre einen langen, schönen Traum... :freak:

X-Dragon 21. Jan 2003 15:17

Hier hab ich was zu Array gefunden (mehrdimensional, dynamisch,...), vielleicht hilft das ja weiter:
http://home.t-online.de/home/PeterJH...les/arrays.htm

Beschränkte Arrays haben mir bisher immer gereicht, deshalb warte ich mal ab wie sich das hier so entwickelt :) .

oki 21. Jan 2003 16:17

Hallo,

das hört sich ja interessant an.

Baumstrukturen und deren dynamische Verwaltung bearbeite ich immer mittels TTreeNode-Objekten.

Ehrlich habe ich die noch nicht ohne TTreeView verwendet, aber ich glaube der muß nicht unbedingt sein.
Der Vorteil ist, dass einige nützliche Methoden für die "Zweige" mitgeliefert werden wie "GetNext", GetFirstChild" etc.

Die Eigenschaft TTreeNode.Data kann man gut für Zeiger auf eigene Records verwenden.

Jetzt bitte nicht schimpfen, ich nenne es Iteration, aber von mir aus können wir es auch Recursion nennen (ich meine Methode ruft sich selbst auf) ist der beste Ansatzt um einen Baum zur Laufzeit mit x-beliebigen Ästen abzuarbeiten. Ich mach es jedenfalls immer so.

Gruß Oki

lodda 21. Jan 2003 16:40

Hallo

@oki: Nur mal so nebenbei: Soweit ich weiß spricht man von Iteration, wenn man mit Schleifen arbeitet, die irgendeinen Wert hoch- bzw. runterzählen.
Von Rekursion spricht man wenn sich eine Methode selbst aufruft oder so ähnlich.

Jetzt noch eine Frage an alle: Muss der Speicher der mit SetLength reserviert wurde auch von Hand wieder freigeben werden, oder erledigt das Delphi automatisch?

oki 21. Jan 2003 16:50

Hallo Lodda,

ja ja, ich hab ja schon gesagt dass ich das nicht so piniebel sehe. Du hast sicher Recht. Mir ist ja wichtiger dass ich jemandem helfen kann.

Mit SetLength belegten Speicher kannst du automatisch mit der Zuweisung von nil auf die Variable (dyn Array) frei geben. Das Drumherum macht Delphi.
Weist du der Variablen eine neue Länge zu (zweites mal SetLength) brauchst du dich nicht um den Speicher zu kümmern. Macht alles Delphi. Also ganz easy.

Gruß Oki

lodda 21. Jan 2003 16:58

Warum wird der Speicher freigeben, wenn ich der Variable nil zuweise :?: :?: :?: Ich dachte eine Variable darf den Wert nil besitzen.

Snoop007 21. Jan 2003 19:17

ich glaube das mein anliegen etwas falsch verstanden wurde
ich weiss wie ich mit dynmischen array's arbeite, diese sind mir auch lieber als statische

mein problem bei der sache ist nur, es wird ja von vornherein festgelegt was für ein array man haben möchte
ein eindemensionales x array of string ein zweidemensionales x array of array of integer usw. ...

bei mir sollte es aber ein n demensionales array sein
genau das was oki angesprochen hat, an TreeNodes habe ich nicht gedacht
ich glaube das hilft mir ungemein :)

danke allen die hier gepostet haben :)

oki 22. Jan 2003 08:52

Hallo Snoop 007,

schön, dass dir meine Idee was gebracht hat. Da ich selber gerade an TreeNodes rumprogrammiere kannst du dich gene weiter direkt an mich wenden wenn du da auf Probleme stößt. So ich kann helf ich gerne.

Für lodda,

schau einfach mal in der Delphi Hilfe unter dem Index dynamische Arrays nach. Da steht alles drin. Es ist wirklich so wie ich sagte.

Gruß Oki


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:58 Uhr.
Seite 2 von 2     12   

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