The Copy function has 2 forms. In the first, it creates a new string from part of an existing string. In the second, it creates a new array from part of an existing array.
The first character of a string has index = 1.
Up to Count characters are copied from the StartChar of the Source string to the returned string.
Less than Count characters if the end of the Source string is encountered before Count characters have been copied.
The first element of an array has index = 0.
Up to Count elements are copied from the StartIndex of the Source array to the returned array.
Less than Count elements if the end of the Source array is encountered before Count elements have been copied.
For string copying, a StartChar less than 1 is treated as 1.
To guarantee copying to the end of the string or array, use the MaxInt constant as the Count value.
When copying multi-dimensional arrays, only the first dimension is copied. The elements of all but the final dimension of an array are all pointers to sub-arrays that make up the whole array. After the copy, the target array elements continue to point to the sub-arrays of the source array. These sub-arrays are thereby shared by both the source and target arrays. You have been warned!
i : Integer;
Source, Target : array of Integer;
SetLength(Source, 8); for i := 1 to 8 do // Build the dynamic source array Source[i-1] := i; // Remember that arrays start at index 0
Target := Copy(Source, 3, 4); for i := 0 to Length(Target) -1 do // Display the created array
ShowMessage('Target['+IntToStr(i)+'] : '+IntToStr(Target[i]));