xy: TArray<TPoint>;
ist falsch muss
xy: array [0..9] of TPoint;
sein.
Das ist der entscheidende Unterschied. Damit sind die Werte für Länge und Referenzzähler des Arrays undefiniert bzw. von den davor liegenden Daten abhängig. Ein Length(meta) sollte demnach auch einen zufälligen Wert zurückgeben. Du sitzt damit potentiell quasi auf einer Zeitbombe.