Der Code ist meiner Meinung nach falsch - eventuell nur falsch abgeschrieben.
Das Move erwartet im dritten Parameter die Anzahl Bytes. Hier wird aus unerfindlichen Gründen 1 Byte zuviel angegeben. Der korrekte Code müsste so lauten:
System.Move(AArray[AIndex + 1], AArray[AIndex], (Length(AArray) - AIndex - 1) * SizeOf(string));
Einfacher geht es aber mit
Delete(AArray, AIndex, 1);
Siehe:
System.Delete