wulfskin: Fast, anders rum; und Move nimmt keine Pointer.
Statt A würde ich A[0] (bzw. A[Low(A)] für die, die's ganz genau haben wollen; nur für statische Arrays relevant) schreiben, damit's auch bei den dynamischen Arrays klappt. Das @S[1] sollte man noch ersetzen durch Pointer(S)^ bzw. wenn schon S[1], aber das generiert iirc einen Overhead (da der String als Referenz übergeben wird, wird eine Kopie des Strings angefertigt wird, falls der Referenzzeiger grössergleich 2 ist). PChar(S)^ kreiert auch unnötigen Overhead, da das nur bei leeren Strings einen Unterschied macht und bei statischen Arrays keine Grösse 0 gibt (bzw. bei dynamischen Arrays schon, aber dann wird sowieso nichts kopiert und Move macht nichts).
Sowas wie
Move(A[Low(A)], Pointer(S)^, Length(S)); wäre eine Lösung. Wenn du sowieso dynamische Arrays hast, dann aus Leserlichkeitsgründen Low(A) durch 0 ersetzen und falls du auf Pointers verzichten willst statt Pointer(S)^ einfach S[1].
