Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Dynamisches Array of Array of Char! Wie ändere ich die Größe


Larus - So 15.05.05 12:19
Titel: Dynamisches Array of Array of Char! Wie ändere ich die Größe
Wie der Titel schon sagt! Ich habe eine arrayvariable die wie folgt aussieht:


Delphi-Quelltext
1:
Text2: Array of Array of Char;                    


Das Problem ist beide Arrays müssen variabel sein ! Ich kann sie nicht wie folgt festlegen:


Delphi-Quelltext
1:
Text2: Array [0..5of Array [0..40of Char;                    


weil ich sie ändern können muss z.B. auf:


Delphi-Quelltext
1:
Text2: Array [0..3of Array [0..99of Char;                    


Wie das bei einem einzelnen Array geht weiß ich ja:


Delphi-Quelltext
1:
setLength(Text2,5);                    


nur wie geht das, dass ich alles ändern kann?

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.
Moderiert von user profile iconChristian S.: Topic aus Algorithmen, Optimierung und Assembler verschoben am So 15.05.2005 um 12:33


Muetze1 - So 15.05.05 12:43

Moin!

1. Manche Delphiversionen können es schon so: SetLength(arr, 1020);

2. Ältere nicht - bzw. wenn du in der 2. Dimension unterschiedliche Längen haben willst, dann so:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
Var
  i : Integer;
Begin
  SetLength(arr, 10);
  For i := Low(arr) To High(Arr) Do
    SetLength(arr[i], 20);
End;


In beiden Beispielen hast du in der 1. Dimension 10 Elemente und in der 2. Dimension jeweils 20 Elemente...

MfG
Muetze1


Larus - So 15.05.05 12:56

besten dank ich werde es mal ausprobieren! Ich verwende Delphi 7 und benötige für den zweiten array keine unterschiedlichen dimensionen


AXMD - So 15.05.05 13:09

user profile iconLarus hat folgendes geschrieben:
besten dank ich werde es mal ausprobieren! Ich verwende Delphi 7 und benötige für den zweiten array keine unterschiedlichen dimensionen


Darf ich fragen, warum du es dann dynamisch deklarierst :gruebel:?

AXMD


Allesquarks - So 15.05.05 16:36

Wieso verwendest Du nicht wenigstens für das array of character strings. Dies sind schon von Delphi dynamisch verwaltet. Du kannst auf jeden Fall jede Spalte einzeln dynamisch verändern (ungefähr so setlength(myarray,10,neuelänge)). So wurde die zehnte Spalte gändert. Delphi akzeptiert aber auch für die Spalte eine Variable, so dass du zur Not mit einer Schleife die Länge deines übergeordneten Arrays zur Gänze einheitlich verändern kannst.


Larus - So 15.05.05 18:31

ok falsch rübergekommen! Ich meine das so: Ich muss jetzt nich bei Text2[2,...] die Möglichkeit haben eine andere Länge für ... zu haben als bei Text2[3,...]! Hat sich aber auch schon erledigt! Habs nur mit einem String gemacht!