OMG!
Wer hat denn den Code von TArray.Copy<T> durch die Qualitätsprüfung gelassen?
Delphi-Quellcode:
class procedure TArray.Copy<T>(const Source, Destination: array of T; SourceIndex, DestIndex, Count: NativeInt);
begin
CheckArrays(Pointer(@Source[0]), Pointer(@Destination[0]), SourceIndex, Length(Source), DestIndex, Length(Destination), Count);
if IsManagedType(T) then
System.CopyArray(Pointer(@Destination[SourceIndex]), Pointer(@Source[SourceIndex]), TypeInfo(T), Count)
else
System.Move(Pointer(@Destination[SourceIndex])^, Pointer(@Source[SourceIndex])^, Count * SizeOf(T));
end;
Die Deklaration von System.CopyArray ist zwar
procedure CopyArray(Dest, Source...
aber die von System.Move immer noch
procedure Move(const Source; var Dest;...