Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Dynamische Array's
Holg_i - Sa 14.08.10 11:51
Titel: Dynamische Array's
Delphi-Quelltext
1: 2: 3:
| var MyArray: array of array of integer; setlength(MyArray,10,10); |
Soweit ist ja alles klar...
Kann ich aber auch folgendes machen:
Ich brauche ein Array welchen ungefähr so aus sieht
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| var MyArray: array of array of integer; setlength(MyArray,1,10); setlength(MyArray,2,5); setlength(MyArray,24,50); |
So das ich ein Array habe von
MyArray[1,0..10]
MyArray[2,0..5]
...
...
MyArray[24,0..50]
Marc. - Sa 14.08.10 12:00
Holg_i hat folgendes geschrieben : |
Delphi-Quelltext 1: 2: 3:
| var MyArray: array of array of integer; setlength(MyArray,10,10); | |
Falsch. Mittels SetLength() wird nicht die Obergrenze des Arrays, sondern die tatsächliche Anzahl der Elemente festgelegt. Das erste entsprechend indiziert mit 0. Demzufolge entspräche das dynamische Array in diesem Beispiel
var MyArray[0..9,0..9] of Integer;.
Beste Grüße,
Marc
Holg_i - Sa 14.08.10 12:39
Ok Ok
aber das war und ist ja nicht meine Fragestellung.
Ich Brauche ein Array das sich in der zweiten Dimension unterschiedliche längen hat...
wie getippt
MyArray[1,0..9]
MyArray[2,0..50]
MyArray[3,0..1]
...
..
..
MyArray[23,0..12]
Die erste Dimension ist mir beim Start nicht bekannt... und die zweite ergibt sich auch erst.
Nehmen wir an die erste Dimension gibt die Benutzernummer an von 1 bis Max Benutzer
und die zweite Dimension gibt einen Eintag an.
So möchte ich mit MyArray[1,5] den fünften eintrag des Benutzers 1 haben...
Benutzer 1 hat in dem fall mal 10 Einträge
Benutzer 2 hat in dem fall mal 51 Einträge
Benutzer 3 hat in dem fall mal 2 Einträge
u.s.w.
Gausi - Sa 14.08.10 12:46
Du kannst in einem 2D-Array jedem Array eine eigene Größe geben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| MeinArray = Array of Array of Integer;
Setlength(MeinArray, 100); Setlength(MeinArray[0], 10); Setlength(MeinArray[1], 42); |
Marc. - Sa 14.08.10 12:47
Holg_i hat folgendes geschrieben : |
Ok Ok
aber das war und ist ja nicht meine Fragestellung. |
Halte ich dennoch für nicht ganz unwichtig. ;)
Holg_i hat folgendes geschrieben : |
Ich Brauche ein Array das sich in der zweiten Dimension unterschiedliche längen hat...
[...]
MyArray[1,0..9]
MyArray[2,0..50]
[...] |
Delphi-Quelltext
1:
| SetLength(MyArray[X], Y); |
X seie der Index der ersten, Y die Länge der zweiten Dimension.
Wofür die Komma Null? Ein Index ist immer eine ganze Zahl. :gruebel:
delfiphan - Sa 14.08.10 13:02
Marc. hat folgendes geschrieben : |
| Wofür die Komma Null? Ein Index ist immer eine ganze Zahl. :gruebel: |
Das Dezimaltrennzeichen in den meisten Programmiersprachen ist ".", daher soll dieses Komma wohl eher die Dimensionen trennen.
Holg_i - Mo 16.08.10 14:01
Danke euch alle.
Genau so wie Gausi es aufgezeigt hatt so geht es wunderbar.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!