Autor Beitrag
Holg_i
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Sa 14.08.10 11:51 
ausblenden Delphi-Quelltext
1:
2:
3:
var MyArray: array of array of integer;
//...
setlength(MyArray,10,10);  // Ist das gleiche wie .. var MyArray[0..10,0..10] of Integer;


Soweit ist ja alles klar...

Kann ich aber auch folgendes machen:

Ich brauche ein Array welchen ungefähr so aus sieht


ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
var MyArray: array of array of integer;
//...
setlength(MyArray,1,10);  // Ist das gleiche wie .. var MyArray[0..1,0..10] of Integer;
setlength(MyArray,2,5);  // Ist das gleiche wie ..  var MyArray[0..2,0..5] of Integer;
//..
//..
//..
//..
setlength(MyArray,24,50);  // Ist das gleiche wie ..  var MyArray[0..2,0..5] of Integer;



So das ich ein Array habe von

MyArray[1,0..10]
MyArray[2,0..5]
...
...
MyArray[24,0..50]
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Sa 14.08.10 12:00 
user profile iconHolg_i hat folgendes geschrieben Zum zitierten Posting springen:
ausblenden Delphi-Quelltext
1:
2:
3:
var MyArray: array of array of integer;
//...
setlength(MyArray,10,10);  // Ist das gleiche wie .. var MyArray[0..10,0..10] of Integer;

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..9of Integer;.

Beste Grüße,
Marc
Holg_i Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 8554
Erhaltene Danke: 481

Windows 7, Windows 10
D7 PE, Delphi XE3 Prof, Delphi 10.3 CE
BeitragVerfasst: Sa 14.08.10 12:46 
Du kannst in einem 2D-Array jedem Array eine eigene Größe geben:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
MeinArray = Array of Array of Integer;

Setlength(MeinArray, 100); // Dann hast du 100 Benutzer

Setlength(MeinArray[0], 10); // Nutzer 0 hat dann 10 Einträge
Setlength(MeinArray[1], 42); // Nutzer 1 hat dann 42 Einträge
// usw.

_________________
We are, we were and will not be.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Sa 14.08.10 12:47 
user profile iconHolg_i hat folgendes geschrieben Zum zitierten Posting springen:
Ok Ok

aber das war und ist ja nicht meine Fragestellung.

Halte ich dennoch für nicht ganz unwichtig. ;)

user profile iconHolg_i hat folgendes geschrieben Zum zitierten Posting springen:
Ich Brauche ein Array das sich in der zweiten Dimension unterschiedliche längen hat...
[...]
MyArray[1,0..9]
MyArray[2,0..50]
[...]

ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2684
Erhaltene Danke: 32



BeitragVerfasst: Sa 14.08.10 13:02 
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
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.
Marc.
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1876
Erhaltene Danke: 129

Win 8.1, Xubuntu 15.10

BeitragVerfasst: Sa 14.08.10 13:54 
user profile icondelfiphan hat folgendes geschrieben Zum zitierten Posting springen:
user profile iconMarc. hat folgendes geschrieben Zum zitierten Posting springen:
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.

Jetzt seh ich's auch. Ein Leerzeichen zwischen den beiden Parametern wäre auch zu eindeutig gewesen. :autsch: Danke.
Holg_i Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 79



BeitragVerfasst: Mo 16.08.10 14:01 
Danke euch alle.

Genau so wie Gausi es aufgezeigt hatt so geht es wunderbar.