Показать сообщение отдельно
  #1  
Старый 13.03.2010, 16:56
Smerch66 Smerch66 вне форума
Прохожий
 
Регистрация: 31.10.2009
Сообщения: 43
Репутация: 10
По умолчанию Передача массива в процедуру с помощью указателя

var
DATA : array of Float; //динамический массив, размер которого задаю в тексте программы.
DATAlength: integer;
i,num: integer;

//далее идёт процедура, которая находит максимальный элемент в массиве, и возвращает номер этого элемента в массиве. В эту процедуру нужно передать массив(точнее указатель на массив, чтобы не загружать память)

procedure maxelement(mass : array of Float; mNFFT : integer; var element : integer);
begin
element:=0;
for i:=1 to mNFFT-1 do
begin
if abs(mass[i])>abs(mass[element]) then
element:=i;
end;
end;

//далее идёт кусок из текста, в котором обращаюсь к процедуре
setlength(DATA, DATAlength);
...
maxelement(DATA, DATAlength, num);


Правильно ли я понимаю, что если оставить всё как описано выше, то в процедуру передаётся массив целиком, а не указатель на него?

Если всё таки это передача указателя, то почему когда передаю массивы размерности примерно 100000 - 150000 элементов всё в порядке. А как передаю массив примерно на 360000 элементов, выскакивает ошибка в ходе выполнения программы, о каком-то переполнении.
Подскажите пожалуйста как решить эту проблему.
Ответить с цитированием