Existe razones para usar punteros.
MUY raramente.
---
Una de las lecciones para mantener un código sin líos es EVITAR MUTACIONES (osea: reducir al máximo el alterar los datos desde multiples puntos). Un ejemplo concreto es todo lo que se parezca a una variable global (que es lo que esto parece).
Es mejor pasar los datos, y crear nuevos en base a estos. Algo asi:
Código Delphi
[-]
function generar(entrada):array[0..299]
begin
nuevo := array[0..299];
result:= nuevo;
end