Есть класс
Type TElement = class
    suc: ^TElement;
    procedure Print;virtual; {}
    constructor Init;
    destructor Destroy;
  end;
type TE=^TElement;
надо написать функцию добавления элемента в список.
Для убедительности приведу работающий код C++
  void TQueue::addEL(TElement *e)  //добавление элемента
 {
  if (first==NULL)
	    { first=last=e; e->nxt=NULL;}
   else
   { e->nxt=first;first=e;}
 }
добился чтобы в дельфевую addEL передавался также указатель - для этого ввелен тип TE
 procedure TQueue.addEL(var val: TE);
  begin
    if first=nil  then
       begin first:=val; last:=val; end
    else
     begin val.suc^:=@(first); first:=val; end;
  end;
получилось очень накручено - верно ли? другие попытки просто компилятор не пропускал