INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Arrays als array of Referenzen.vi



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

24.01.2009, 12:25
Beitrag #7

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.687
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Arrays als array of Referenzen.vi
' schrieb:kannst du das bitte mal in das Beispiel einbauen ?
Dein Beispiel ist schon so wie ich gemeint habe.

Hier nochmals ein Erklärungsversuch:

Ein 3D-Array ARRAY[LenA,LenX,LenY] of DBL (ein solches war ich der Meinung, hat gottfreid ganz am Anfang verwendet) ist so gesehen ein Array of Array of Array, also ARRAY[LenA]ARRAY[LenX]ARRAY[LenY] of DBL (oder Array[LenA]Array[LenX,LenY] of DBL). IN LV ist die Größe eines jeden Teilarrays ARRAY[IndexA] immer gleich groß (hier: LenX*LenY*LenArrTyp). Das heißt also alle ARRAY[IndexX,IndexY] sind gleich groß/lang. (Beachte: dieses Verfahren kann kaskadiert werden auf m-dimensionale Arrays).
Letztendlich gilt die Größenkonstanz auch für ein 1D-Array. Das klingt zwar trivial, ist aber so. Die Größe ist die Größe des Basistyps, z.B. DBL also 8 Byte.

Ist der Basistyp ein CLUSTER, so ist die Basislänge eines m-dimensionalen ARRAY of CLUSTER die Größe von CLUSTER. Cluster sind komplexte Datentypen, die selbst wieder unterschiedliche Datentypen "sammeln" können. Cluster haben eine besondere Datenstruktur, z.B. wenn er einen String oder ein Array enthält. Die Daten des Arrays selbst stehen nämlich nicht direkt im Cluster. Im Cluster selbst steht ein Pointer auf einen Datenbereich, der die Daten tatsächlich enthält. Dadurch ist es nun möglich, dass jedes dieser ARRAY[X].CLUSTERARRAY eine eigene Größe haben kann.
Überlege folgendes: Gesetzt der Fall, die Daten von String und Array sind im Cluster abgespeichert. Ganz am Anfang des Clusters steht ein String und danach viele, viele sonstige Daten. Jetzt soll der String am Anfang doppelt so lang gemacht werden. Das würde nun bedeuten, dass ALLE DATEN im Cluster verschoben werden müssten. Das ist aber ein Aufwand (MemoryManager!), der bis ins unbezahlbare ausarten kann. Die Lösung über einen Pointer ist da ganz einfach: Neuen Speicher für den String allozieren, String kopieren und erweitern und neuen Pointer speichern. Analoges gilt für das Array.

Hier nochmals ein Bild und ein VI mit Strings zum Kucken für die Länge bei 2DArr.

Lv80_img


Angehängte Datei(en) Thumbnail(s)
   

Sonstige .vi  Muster.vi (Größe: 8,87 KB / Downloads: 151)

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Nachrichten in diesem Thema
Arrays als array of Referenzen.vi - IchSelbst - 24.01.2009 12:25

Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Extrem langsamer Variablen Zugriff über Referenzen hajos118 12 4.533 01.08.2022 17:20
Letzter Beitrag: BNT
  Muss man Referenzen von controls überhaupt schließen? dimitri84 4 3.939 21.04.2022 11:57
Letzter Beitrag: dimitri84
  Wann schließe ich (ActiveX, Excel) Referenzen? + wie Cluster to Array? TpunktN 9 8.858 28.01.2020 14:14
Letzter Beitrag: TpunktN
  Referenzen in mehreren Bibliotheken aktualisieren seuk 3 3.633 12.09.2019 09:10
Letzter Beitrag: IchSelbst
  Cluster mit Referenzen auf FP-Elemente Oli_N 8 8.421 15.02.2017 11:19
Letzter Beitrag: Oli_N
  Frage zu Referenzen maxxillian 1 3.881 21.10.2016 08:04
Letzter Beitrag: GerdW

Gehe zu: