![]() |
Delphi-Version: 2010
Frage zu mehrstufigen arrays
hi.
ich habe einen 3-stufigen dynamischen array.
Code:
wie kann ich während der laufzeit die größe/länge der 3. ebene ermitteln (30) ?
var
a: array of array of array of Integer; begin SetLength(a, 10, 20, 30); Showmessage(IntToStr(Length(a[?]))); end; vielen dank |
AW: Frage zu mehrstufigen arrays
So gar nicht. Schon bei 2 Dimensionen kann die Länge ja je Element der 1. Ebene variieren.
|
AW: Frage zu mehrstufigen arrays
Wenn man nur über diese SetLength-Variante alles auf einmal setzt, dann kann man schon davon ausgehn, daß alle Arrays einer Ebene gleich groß sind.
Demnach kann man jeweils den ersten Eintrag einer Ebene nutzen und darüber nachsehn.
Delphi-Quellcode:
Ansonsten geb ich Detlef schon Recht.
HauptEbene := Length(MyArr);
ZweiteEbene := Length(MyArr[0]); DritteEbene := Length(MyArr[0][0]) oder Length(MyArr[0, 0]); |
AW: Frage zu mehrstufigen arrays
Die Größe einzelner Ebenen kann sich im Programmverlauf aber noch ändern, sonst könnte man ja gleich ein statisches Array nehmen.
|
AW: Frage zu mehrstufigen arrays
Zitat:
Aber wie du/wie schon sagten, wenn es nur am Anfang mal zusammen gesetzt wurde und zwischenzeitlich einzelne Größen nicht verändert wurden, nur dann kann man so ein zuverlässiges Ergebnis erfahren. |
AW: Frage zu mehrstufigen arrays
Jepp, ich wollte auch nur einmal davor warnen, einfach ganz mutig auf irgendwelche Elemente zugreifen zu wollen, nur in der Annahme: "die werden schon da sein".
|
AW: Frage zu mehrstufigen arrays
danke himitsu
Zitat:
![]() |
AW: Frage zu mehrstufigen arrays
Man könnte aber auch einen entsprechenden Typ deklarieren und eine Variable davon als privates Feld des Formulars definieren, die sollte IIRC dann auch auf dem Heap liegen.
|
AW: Frage zu mehrstufigen arrays
auch statische Arrays kann man vom Stack fernhalten
und via GetMem oder New auf den Heap legen [add] und genaus über Klassen. einen Dritten: alle statischen Arrays liegen in einem Stück vor ... bei einem mehrdimensionalen dynamischen Array sind es mehrere getrennte Speicherblöcke, was bei sehr großen Arrays und bei Änderung der Größe positive Auswirkungen zeigen kann. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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-2025 by Thomas Breitkreuz