由于出于兼容性目的,我需要将我的(Double)动态数组传递给定义为的过时类型p_vektor

p_vektor=array[1..50] of double;


尽管这两个声明都与第一个索引声明不同,但是所使用的类型相同。我编写了以下代码来复制阵列,但失败了。

function DoubleArrayToPVektor(const aArray: TArray<Double>): p_vektor;
begin
  Move(aArray[Low(aArray)], Result[Low(Result)], Length(aArray));
end;


结果,仅第一个元素被成功复制。是否有任何快速方法可以在不使用替代迭代解决方案的情况下复制阵列?

最佳答案

Move接受字节数。您传递元素数量。你需要通过

Length(aArray)*SizeOf(aArray[0])


作为要复制的字节数。

请确保检查aArray的长度不超过50。

另请注意,您并未初始化结果数组的所有元素。这是否重要,只有您可以判断。

10-08 00:06