Код:
i:=0 ; // сначала это
while not ReportQuery.Eof do
begin
SetLength(A, i); // а потом сразу это
A[i]:= // и вот это
вместо
напишите
И зачем во второй раз сканировать таблицу?
Все повторы нужно искать в массиве А.
И для начала желательно этот массив отсортировать.