我尝试使用TArray.Copy
将泛型数组中的所有项复制到一个新数组中(注意:在 Delphi XE7中,该函数没有文档)。
class procedure Copy<T>(const Source, Destination: array of T; SourceIndex, DestIndex, Count: NativeInt); overload; static;
class procedure Copy<T>(const Source, Destination: array of T; Count: NativeInt); overload; static;
执行函数后,Source数组会变成以零填满的数组:
var
Source : TArray<Integer>;
Destination : TArray<Integer>;
begin
Source := [10, 20];
SetLength(Destination, Length(Source));
//here Source is [10, 20]
TArray.Copy<Integer>(Source, Destination, 0, 0, Length(Source));
//here Source is [0, 0]
end;
为什么要更改源数组?
1条答案
按热度按时间bxjv4tth1#
X1 m0n1x在XE 7中被破坏,因为有人混淆了
System.Move
的参数:RSP-9763: TArray.Copy copies from destination to source for unmanaged types
RSP-9887: TArray.Copy is broken in multiple ways
FWIW,对于你的场景,它不需要
TArray.Copy
-System.Copy
可以处理复制数组,如果复制的范围从头开始。如果你想复制整个内容,你甚至可以省略第二个和第三个参数,只需要调用: