2015-11-05 5 views
2

Поскольку целях совместимости, мне нужно передать свой динамический массив (двойной) устаревшего типу 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; 

В результате успешно копируется только первый элемент. Есть ли быстрый способ скопировать массив без использования альтернативного итеративного решения?

ответ

3

Переместить принимает количество байтов. Вы передаете количество элементов. Вам необходимо передать

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

как количество байтов, подлежащих копированию.

ли убедитесь, что вы убедитесь, что длина aArray составляет не более 50.

будьте Также известно, что вы не инициализацией все элементы результирующего массива. Неважно, только вы можете судить.

+0

Отличный! Он работает, спасибо. –

Смежные вопросы