Selbst wenn beides dynamische Arrays wären, ginge es nur, wenn SizeOf(DasArray[0]) bei Beiden identisch wäre und wenn die Felder eine kompatible Speicherverwaltung haben.
TArray<TSmallPoint>
und
TArray<Small>
können also nicht kompatibel sein.
Aber da der "Inhalt" beider Arrays aus vielen "Small" besteht, dann
Delphi-Quellcode:
SetLength(meta, Length(xy) * 2);
Move(meta[0], xy[0], Length(meta) * SizeOf(Small)); // oder mit MoveMemory
Vorallem wenn die Felder mehr als nur einfache "Integer" sind, dann
Delphi-Quellcode:
SetLength(meta, Length(xy) * 2);
System.CopyArray(@meta[0], @xy[0], TypeInfo(Small), Length(meta));
was die Speicherverwaltung des Typs beachtes. (Interface, dynamisches Array, String, ...)