@cartridge: Wie kommst du denn da drauf? Wenn du ein statisches Array als lokale Variable hast, dann bist du vielleicht schnell mal an der Grenze, bei dynamischen Arrays gibt's aber keine solchen Grenzen!
@thomasoop: Vergrösserst du das Array immer um 1 Element? Bei einem Array sind die Daten immer am Stück. Wenn du jetzt das Array immer um 1 Element vergrösserst, kann das Probleme geben (wenn kein Virtual Memory Block mehr existiert, wo das ganze reinpasst). Das ganze ist auch ziemlich ineffizient, da beim Vergrössern des Arrays evtl. die ganzen Daten im Memory umgeschaufelt werden müssen. Im Normalfall reserviert man nie zusammenhängende Memoryblöcke, die fast 1GB gross werden. Du solltest das ganze vielleicht ein wenig umprogrammieren (ohne dynamischen Arrays).
PS: Ich sehe, es ist ein array of strings. Es wird also kein Memoryblock alloziert, welcher mehrere hundert MB gross sind

Vielleicht probierst du mal die TStringList aus, obwohl das Problem wahrscheinlich damit nicht gelöst ist.