Wie kann ich dynamische Arrays erzeugen?


Unter Delphi 4 gibt es ja endlich dynamische Arrays, also Felder, deren Größe zur Laufzeit geändert werden kann, näheres dazu steht in der online-Hilfe.

Unter Delphi 3 ist das nur etwas umständlicher möglich:

1. Deklariert wird ein dynamisches Array ohne Größenangabe:

type
  TdynArray = array[0..0] of integer;
  TdynArrayPtr = ^TdynArray;

var myArray = TdynArrayPtr;

2. Der Speicher für die Daten muß man dann selber zuweisen, je nach aktueller Größe des Arrays, hier für x Elemente:

  myArray := nil;
  myArray = AllocMem(x*size(integer));

4. Damit bei einer Größenänderung die vorhandenen Elemente nicht verloren gehen, benutzen wir hier die Funktion ReAllocMem:

  myArray = ReAllocMem(y*size(integer));

5. Nicht vergessen: Selbst angeforderter Speicher muß auch immer selber freigegeben werden:

  FreeMem(myArray);
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ