Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi dynamisches mehrdimensionales Array durchlaufen (https://www.delphipraxis.net/105413-dynamisches-mehrdimensionales-array-durchlaufen.html)

Meta777 21. Dez 2007 10:14


dynamisches mehrdimensionales Array durchlaufen
 
huhu...

Wie kann man / kann man überhaupt ein dynamisches, mehrdimensionales Array in einer schleife durchlaufen?

TIA

Shalom & Gesegnete Weihnachtszeit :xmas:

Jelly 21. Dez 2007 10:19

Re: dynamisches mehrdimensionales Array durchlaufen
 
Mit den Funktionen High und Low kriegst du die Ober- und Untergrenze deines Arrays. Das klappt aber, wenn ich mich nicht irre, für eindimensionale Arrays. Aber vielleicht gehen so Konstrukte wie


Delphi-Quellcode:
arr : array of array of integer ;
...
High(arr[0]) ;

Meta777 21. Dez 2007 10:22

Re: dynamisches mehrdimensionales Array durchlaufen
 
Ja mit high und low hab ich auch schon überlegt... vielleicht muss man da ne rekursive funktion schreiben... hm... mal überlegen...

dominikkv 21. Dez 2007 10:53

Re: dynamisches mehrdimensionales Array durchlaufen
 
Delphi-Quellcode:
for I := low(MyArray) to high(MyArray) do
  for J := low(MyArray[i]) to high(MyArray[i]) do
    for K := low(MyArray[I, J]) to high(MyArray[I, J]) do
      // bla

rawsoul 21. Dez 2007 11:21

Re: dynamisches mehrdimensionales Array durchlaufen
 
Na das nenn ich fachmännisch ;)
Mal ein kleiner Eingriff in diesen Thread - Es tut mir leid, ich möchte keinen extra Thread dafür anfertigen.
Gibt es etwas ähnliches wie WithEach($Array as $i){ ... } (bei PHP) nicht auch in Delphi?

Dax 21. Dez 2007 11:23

Re: dynamisches mehrdimensionales Array durchlaufen
 
Nein, gibt es nicht.

Hawkeye219 21. Dez 2007 12:01

Re: dynamisches mehrdimensionales Array durchlaufen
 
Hallo,

ein Zugriff auf Arraydaten ist im BDS mit der FOR..IN-Schleife möglich, wenn man das Array geeignet vereinbart:

Delphi-Quellcode:
type
  TDynVector = array of Integer;
  TDynMatrix = array of TDynVector;
var
  Vector  : TDynVector;
  Matrix  : TDynMatrix;
  row, col : Integer;
  Value   : Integer;
begin
  SetLength (Matrix, 4, 8);

  for row := 0 to High(Matrix) do
    for col := 0 to High(Matrix[row]) do
      Matrix[row, col] := 100 * row + col;

  for Vector in Matrix do
    for Value in Vector do
      // Value enthält jetzt einen Wert der Matrix
      ;
end;
Gruß Hawkeye


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:05 Uhr.

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