Если процедура объявлена так:
PROCEDURE AddToList (VARhead: ANYPTR; elem: ANYPTR);
то и передавать в качестве VAR параметра Вы должны именно ANYPTR.
## Код:
```
VAR head, elem: PFodder;
  pointer: ANYPTR;
BEGIN
  ...
  pointer := head;
  AddToList(pointer, elem);
  head := pointer(PFodder);
```

Но тогда смысла в такой процедуре становится маловато.

Ну, попробуйте её оформить как функцию (без VAR параметров), как-нибудь так:

list := Attach(list, element)(PFodder);

А ещё лучше, не поленитесь и напишите типизированные варианты процедур.