Einzelnen Beitrag anzeigen

fwsp
(Gast)

n/a Beiträge
 
#2

Re: Dynamisches Array indizieren

  Alt 16. Jan 2007, 14:29
Zitat von Delphi 7 Hilfe:
Zur Deklaration von mehrdimensionalen dynamischen Arrays verwenden Sie aufeinander folgende array of ...-Konstruktionen. Ein 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:

SetLength(Msgs,I,J); Msgs[0,0] bezeichnet dann ein Element dieses Arrays.

Sie können auch mehrdimensionale dynamische Arrays anlegen, die nicht gleichförmig sind. Rufen Sie dazu als Erstes die Funktion SetLength auf, und übergeben Sie ihr Parameter für die ersten n Dimensionen des Arrays:

Delphi-Quellcode:
var Ints: array of array of Integer;
SetLength(Ints,10);
Mit dieser Anweisung weisen Sie dem Array Ints Speicherplatz für zehn Zeilen zu. Den Speicher für die Spalten können Sie später einzeln zuweisen (und dabei unterschiedliche Längen angeben):

SetLength(Ints[2], 5); Die dritte Spalte von Ints kann damit fünf Integer-Werte aufnehmen, und Sie können ihr nun Werte zuweisen (auch wenn die anderen Spalten nicht zugewiesen sind), z. B. Ints[2,4] := 6.

Im folgenden Beispiel wird mithilfe von dynamischen Arrays (und der in der Unit SysUtils deklarierten Funktion IntToStr) eine ungleichförmige String-Matrix erstellt:

Delphi-Quellcode:
var
  A : array of array of string;
  I, J : Integer;
begin
  SetLength(A, 10);
  for I := Low(A) to High(A) do
  begin
    SetLength(A[I], I);
    for J := Low(A[I]) to High(A[I]) do
      A[I,J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
  end;
end;
  Mit Zitat antworten Zitat