Наверное выдаёт ошибку в это месте?
Код:
...
for i= 0 to l do begin
...
Всё правильно, компилятор боится, что пока выполняется цикл, глобальная переменная может быть изменена. Объявите L в самой процедуре.
З.Ы. Пропустил случайно: должно быть так: For i
: =