![]() |
Länge eines 2 dim. Arrays ändern?
Hallo,
wie kann ich bei einem 2 dimensionalen Array die Größe ändern (Anzahl der Zeilen erhöhen)? Das Array ist ursprünglich so angelegt:
Delphi-Quellcode:
tschüß, Steffen. . var RGArray : Array of Array of String; begin . . Setlength(RGArray,1,23); . . end; |
Re: Länge eines 2 dim. Arrays ändern?
Hallo Steffen,
ich denke, das funktioniert wie bei eindimensionalen Arrays: Einfach erneut Setlength mit der neuen Feldgröße aufrufen. Grüße |
Re: Länge eines 2 dim. Arrays ändern?
SetLength arbeitet nur mit jeweils einer Array-Ebene
Delphi-Quellcode:
// 2. Ebene setzen, z.B. für das 2. Feld der 1. Ebene
Setlength(RGArray[1], 23); // Erste Ebene setzen Setlength(RGArray,1); // bei Array of Array of Array ... usw. Setlength(RGArray[i][j], x); Setlength(RGArray[i, j], x); |
Re: Länge eines 2 dim. Arrays ändern?
Zitat:
Zitat:
Edit: Delphi schlägt mir auch nur einen Integer-Parameter vor und verlinkt zur Unit "System". Ich verstehe es auch nicht, aber es geht auf jedenfall. *g* |
Re: Länge eines 2 dim. Arrays ändern?
Hallo,
ja, das mit setlength klappt soweit, nun muß ich aber noch feststellen, wie groß "I" ist, um "I" um 1 erhöhen zu können.
Delphi-Quellcode:
tschüß, Steffen
SetLength(Msgs,I,J);
|
Re: Länge eines 2 dim. Arrays ändern?
Das kannst du so machen:
Delphi-Quellcode:
SetLength(Msgs, High(Msgs) + 1, J);
|
Re: Länge eines 2 dim. Arrays ändern?
Das müsste doch auch mit Length(msgs) zu erfragen sein, oder nicht?
|
Re: Länge eines 2 dim. Arrays ändern?
Jup, denn High(X)+1 = Length(X) für dynamische Arrays.
|
Re: Länge eines 2 dim. Arrays ändern?
Meine ich doch, dann ist Matzes Code sogar falsch, das müsste + 2 heißen ;)
|
Re: Länge eines 2 dim. Arrays ändern?
Hallo,
danke mit Length(x) funktioniert das endlich!! Da schweigt die OH aber total, dass das mit High(x) nicht finktioniert tschüß, Steffen |
Re: Länge eines 2 dim. Arrays ändern?
Zitat:
|
Re: Länge eines 2 dim. Arrays ändern?
Passiert :zwinker:
|
Re: Länge eines 2 dim. Arrays ändern?
ahh, ok, ich dacht schon das dort oben war der fehlerhafte Code :oops: und jupp, D7 hier zeigt im ToolTipp auch ur einen Parameter an.
Aber SetLength ist hier eh mehr Compiliermagig und wohl nicht so gut hilfemäßig ausgebaut und in der D7-OH steht noch nichtmal was hier ._. also zum Thema, entweder nochmals SetLength so wie vorher aufrufen und nur andere Dimensionen angeben, oder die Dimensionen einzeln ändern
Delphi-Quellcode:
Den Rest, wie man was von er aktuellen Größe auß hinzufügt wurde ja schon gesagt.
// alles
Setlength(RGArray, x, y); // einzeln Setlength(RGArray, x); Setlength(RGArray[x], y); ich häng meistens so einen Eintrag an:
Delphi-Quellcode:
Var A: Array of irgendwas;
i := Length(A); SetLength(A, i + 1); A[i] := irgedwasneues; oder auch 2... i := Length(A); SetLength(A, i + 2); A[i] := irgedwasneues; A[i + 1] := irgedwasneues; PS: Zitat:
High = Length-1 und das sagt auch die OH High ruft bei dynamischen Arrays intern Length auf und zieht 1 ab. und wenn man die Länger um 1 erhöhen will, dann muß man auch Lenght nehmen und um 1 erhöhen, oder High um 2 Length + 1 = High + 2 = (Length-1) + 2 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz