Получается, что функция GetVariableByName не возвращает nil в случае неудачи.
Нет, это не так. Функция GetVariableByName возвращает либо указатель на переменную, если переменная с таким именем существует, либо nil. Каких-то других вариантов нет. Вы сделали неправильный вывод.
Кроме того, такой код:
aVar:=nil;
aVar := GetVariableByName(aPrefix+intToStr(i));
, является абсолютно бессмысленным, т.к. вторая строка неизбежно переписывает результат первой строки. И если бы GetVariableByName не возвращала nil, то в aVar всё равно записывался бы неправильный указатель.
Можно предположить что в вашем проекте есть другая переменная c именем aVar (например объявленная в глобальном модуле, или в разделе переменных), либо какие-то грубые ошибки в скриптах (например зацикливание), либо переменная aVar используется где-то в скрипте уже после выполнения allfeeders. Точную причину можно назвать только проверив проект.