eine Frage im Zusammenhang mit dem Datenhandling von großen ASCII-Dateien: kann man dynamische Arrays verschachteln? Zur Erläuterung folgender Code:
Code: Alles auswählen
{ Element Connectivity }
{ ==================== }
TElementNodeNumbers = integer;
TElemConnectionEntry = Record
ielid : integer; { element number }
ityp : integer; { element type of element }
nnod : integer; { number of nodes for element ijk }
iel : Array of integer; { array node numbers of element } { <---- dynamic array of integer }
End;
TElementConnectivity = Record
numel : integer; { number of elements }
nnodmx : integer; { max. number of nodes per element }
elemconn : Array of TElemConnectionEntry; { array of element connection entries } { <---- dynamic array of TElemConnectionEntry }
End;
{ im Programm dann }
...
SetLength(iel,nnodmx); { max. number of nodes per element }
...
SetLength(elemconn,numel); { max. number of elements }
...
{ Speicher für ElementConnectivity besorgen }
{ numel und nnodmx im record setzen }
for i:=1 to numel do
begin
{ weiteren Speicher-Block ElementConnectionEntry besorgen }
{ ... und mit den Daten für 1 Element füllen: }
{ ielid, ityp, nnod und Array iel füllen }
{ die ganze Strucktur in elemconn }
end;
D.h. Die übergeordnete Struktur [i]TElementConnectivity enthält ein dyn. Array der Struktur TElemConnectionEntry, welches selbst ein dyn. Array enthält. Beide Arrays können erst zu Laufzeit des Programms dimensioniert werden, da erst dann die Anzahl der Elemente, Konten, ElementConnectivity etc bekannt ist - nebenbei: davon wird es dann noch mehr geben (FEM eben ).
Ich bin nicht sicher, ob das so überhaupt möglich ist. Und wenn ja, ob es sinnvoll ist. Oder ob man lieber mit TList arbeiten sollte; die Listen kann man ja dynamisch erweitern. Da es sehr viele Einträge sind, ist Geschwindigkeit und Speicherverbrauch auch immer eine Aspekt.
Danke für Euren Input,
Photor