Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Länge eines 2 dim. Arrays ändern? (https://www.delphipraxis.net/106902-laenge-eines-2-dim-arrays-aendern.html)

toyohj60 18. Jan 2008 12:46


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:
           
.
.
var
  RGArray    : Array of Array of String;

begin
.
.
Setlength(RGArray,1,23);
.
.
end;
tschüß, Steffen

Matze 18. Jan 2008 12:57

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

himitsu 18. Jan 2008 13:01

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);

Matze 18. Jan 2008 13:07

Re: Länge eines 2 dim. Arrays ändern?
 
Zitat:

Zitat von himitsu
SetLength arbeitet nur mit jeweils einer Array-Ebene

Jain. Ich zitiere aus der OH:

Zitat:

Mehrdimensionale dynamische Arrays

Zur Deklaration von mehrdimensionalen dynamischen Arrays verwenden Sie aufeinander folgende array of ...-Konstruktionen. Zum Beispiel:
Delphi-Quellcode:
type TMessageGrid = array of array of string;
var Msgs: TMessageGrid;
Hier wird ein zweidimensionales String-Array deklariert. Um dieses Array zu instantiieren, rufen Sie SetLength mit zwei Integer-Argumenten auf. Wenn beispielsweise I und J Integer-Variablen sind, wird Speicherplatz für ein I mal J großes Array zugewiesen:
Delphi-Quellcode:
SetLength(Msgs,I,J);

Bei der Funktionsbeschreibung von System.SetLength steht allerdings nur ein Integer-Parameter. Vielleicht gibt's in einer anderen Unit eine überladene Funktion.

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*

toyohj60 18. Jan 2008 13:17

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:
SetLength(Msgs,I,J);
tschüß, Steffen

Matze 18. Jan 2008 13:19

Re: Länge eines 2 dim. Arrays ändern?
 
Das kannst du so machen:

Delphi-Quellcode:
SetLength(Msgs, High(Msgs) + 1, J);

DeddyH 18. Jan 2008 13:23

Re: Länge eines 2 dim. Arrays ändern?
 
Das müsste doch auch mit Length(msgs) zu erfragen sein, oder nicht?

Dax 18. Jan 2008 13:25

Re: Länge eines 2 dim. Arrays ändern?
 
Jup, denn High(X)+1 = Length(X) für dynamische Arrays.

DeddyH 18. Jan 2008 13:28

Re: Länge eines 2 dim. Arrays ändern?
 
Meine ich doch, dann ist Matzes Code sogar falsch, das müsste + 2 heißen ;)

toyohj60 18. Jan 2008 13:33

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz