将动态数组转换为静态

时间:2015-11-05 12:11:15

标签: arrays delphi delphi-xe2

由于兼容性的目的,我需要将我的动态数组(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;

结果,只有第一个元素被成功复制。有没有快速的方法来复制数组而不使用替代的迭代解决方案?

1 个答案:

答案 0 :(得分:3)

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

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

作为要复制的字节数。

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

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