Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Frage zu mehrstufigen arrays (https://www.delphipraxis.net/156451-frage-zu-mehrstufigen-arrays.html)

Cyberstorm 2. Dez 2010 13:05

Delphi-Version: 2010

Frage zu mehrstufigen arrays
 
hi.

ich habe einen 3-stufigen dynamischen array.

Code:
var
  a: array of array of array of Integer;
begin
  SetLength(a, 10, 20, 30);
  Showmessage(IntToStr(Length(a[?])));
end;
wie kann ich während der laufzeit die größe/länge der 3. ebene ermitteln (30) ?


vielen dank

DeddyH 2. Dez 2010 13:07

AW: Frage zu mehrstufigen arrays
 
So gar nicht. Schon bei 2 Dimensionen kann die Länge ja je Element der 1. Ebene variieren.

himitsu 2. Dez 2010 13:12

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:
HauptEbene := Length(MyArr);
ZweiteEbene := Length(MyArr[0]);
DritteEbene := Length(MyArr[0][0]) oder Length(MyArr[0, 0]);
Ansonsten geb ich Detlef schon Recht.

DeddyH 2. Dez 2010 13:14

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.

himitsu 2. Dez 2010 13:18

AW: Frage zu mehrstufigen arrays
 
Zitat:

Zitat von DeddyH (Beitrag 1065623)
Die Größe einzelner Ebenen kann sich im Programmverlauf aber noch ändern, sonst könnte man ja gleich ein statisches Array nehmen.

Wenn man zur Compiletime die Größe noch nicht weiß?

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.

DeddyH 2. Dez 2010 13:22

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".

Cyberstorm 2. Dez 2010 13:24

AW: Frage zu mehrstufigen arrays
 
danke himitsu

Zitat:

Zitat von DeddyH (Beitrag 1065623)
Die Größe einzelner Ebenen kann sich im Programmverlauf aber noch ändern, sonst könnte man ja gleich ein statisches Array nehmen.

und noch aus einem zweiten grund: http://www.delphipraxis.net/156269-t...ml#post1064054

DeddyH 2. Dez 2010 13:32

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.

himitsu 2. Dez 2010 13:33

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 09:09 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