en la linea de "leerarreglo(arreglo); y no entiendo porque:
begin
writeln('Posiciones');
readfila(posiciones);
while not filavacia(posiciones) do
begin
posicion:= primero(posiciones);
LeerArreglo(Arreglo);
if (posicion>1) and (maxcaracteres>posicion) then
BorrarCaracter(Arreglo, posicion);
apilar(basura, extraer(posiciones));
end;
MostrarArreglo(Arreglo);
end.
...podemos conocer la declaración de arreglo y de Leerarreglo????.
Como ninguno de dichos identificadores son palabras reservadas, si no declaradas por tí, no es posible concluir donde está el error sin saber qué es cada cosa, y para ello lo mejor es ver la declaración de ambos identificadores.