Hallo Alois!
Hast Du schon versucht, einige größere Strukturen auf den Heap zu verlegen? Ich nehme an, Du weißt, was ich meine. Wenn Du beispielsweise ein Array mit 1000 REAL-Elementen „normal“ deklarierst, also schreibst
VAR a: ARRAY[0…999] OF REAL;
dann wird das Datensegment mit 6000 Bytes
„belastet“ (pro REAL 6 Bytes).
Wenn Du stattdessen aber zuerst einen Datentyp für dieses Array definierst…
TYPE TRealFeld = ARRAY[0…999] OF REAL;
…und dann eine Zeigervariable anlegst…
VAR p: ^TRealFeld;
(„Zeiger p zeigt auf Variable vom Typ TRealFeld“) …dann belastet diese Zeigervariable das Datensegment nur mit 4 Bytes.
Die 6000 Bytes des Arrays werden dann nicht im Datensegment, sondern auf dem Heap belegt. Diesen Speicher forderst Du erst zur Programmlaufzeit an, und zwar mit
New§
Danach kannst Du z. B. auf das 431ste Element des Arrays zugreifen, indem Du
schreibst
x := p^[431]
Wenn Du das Array aus irgendeinem
Grund irgendwann nicht mehr benötigst,
solltest Du den Heapspeicher mit
Dispose§
wieder freigeben.
Ich hoffe, ich konnte Dir helfen.
MfG
Martin