предполагается динамический массив (скорее всего 1000+ элементов).. насколько я понимаю SetLength в данном случае некошерно от слова «совсем».. в своих сях я бы просто сделал связанный список, а как в lazarus посоветуете эту задачу решить?..
можно оставить как есть. но лучше добавлять элементы сразу тысячами (setlength arr, length(arr) + 1000), а в конце окончательно установить нужный размер. где-то держать индекс текущего элемента и по нему обращаться