Похоже паскаль в принципе не допускает использование для локальных функций возможность передачи их как параметр.
А теперь посмотри, что ты хочешь добиться данным действием: ты хочешь передать локальную функцию как параметр с намерением использовать в теле этой функции некую переменную, которая является параметром её родительской процедуры. Уффф еле высказал.
А что такое параметр как функция? Это есть обыкновенный указатель на функцию, тип которой ты объявил выше. Что это нам значит? Это значит что как только ты передал указатель на эту функцию, то ты вызываешь некоторый код ассоциированный с данным указателем, который не обладает знанием о своей родительской процедуре! В итоге, даже если бы подобную штуку (передача в качестве указателя локальной функции) компилятор и пропустил, то на момент выполнения переменная i у тебя была бы не определена.
Мне кстати удалось обмануть компилятор

, я передал указатель на эту функцию:
Код: Выделить всё
type
Func = function ...
PFunc = ^Func;
Simpson(INTEG: PFunc);
...
После этого все откомпилировалось но при выполнении выскочила фатальная ошибка
Так что ищи другие пути, а глобальных переменных не бойся, не так уж это и плохо и следуй принципу KISS (keep it simple stupid)
