function THIArrayFFT._aGetAmpl;
var
Index: integer;
begin
Result := false;
Index := ToIntIndex(Item);
if (Index < 0) or (Index > tnn - 1) then exit;
dtReal(Val, ArrayOutAmpl[Index]);
Result := true;
end;
tnn равно 16384
У тебя размер массива ArrayOutAmpl -- 8192, а значения индекса можно пихать до 16383
Естественно ArrayEnum будет пытаться читать, пока доступны индексы.
while Arr._Get(eIndex,Item) do begin
_hi_OnEvent_(_event_onItem,Item);
if FStop then break;
inc(Ind,k);
dtInteger(eIndex,Ind);
end;
Этого не произойдет в ArrayRW, тк индексы задаются извне