Ein Bufferoverrun, welcher die Speicherverwaltung des Arrays zerstört?
Wird nicht über Pointer auf das Array zugegriffen, dann hilft es oftmals schon, wenn man die Bereichsprüfung aktiviert.
Oder etwas vollkommen Anderes dreht durch und zerstört zufällig das Array.
PS:
SetLength(felder, x, y);
Änder nichts, aber vereinfacht zumindestens den Code.