[Pascal] Licznik stosu na żądanie

Mam za zadanie stworzyć licznik stosu podający ilość elementów znając tylko jego wierzchołek, mam już naskrobany taki przykładowy program ze stosem oraz funkcję odpowiedzialną za licznik ale coś mi nie działa on, zwraca tylko nonstop 0. Nie wiem co jest nie tak.

Aj ofiarą jestem, do funkcji nie przypisalem wartości.

program project1;


uses crt;

type

     wskaznik=^element;

     rek = record

                liczba:integer;

                ciag:string;

     end;

     element = record

                rekord:rek;

                wsk:wskaznik;

     end;

var

wsk:wskaznik;

rekord:rek;

i:byte;

z:byte;

procedure push(var x:wskaznik; var rekord:rek);

 var

  top:wskaznik;

 begin

   new(top);

   top^.rekord:=rekord;

   top^.wsk:=x;

   x:=top;

 end;

procedure pop(var x:wskaznik; var rekord:rek);

var

  bottom:wskaznik;

begin

  if x<>nil then

  begin

  rekord:=x^.rekord;

  writeln(rekord.liczba);

  writeln(rekord.ciag);

  bottom:=x^.wsk;

  dispose(x);

  x:=bottom;

  end

  else

  begin

  writeln('Stos pusty');

  end;

end;

function licznik(a:wskaznik):word;

var

  l:integer;

begin

 l:= 0;

 while (a<>nil) do

 begin

  l:=l+1;

  a:= a^.wsk;

 end;

end;

begin

randomize;

z:=random(20);

//writeln('Memavail= ',memavail);

for i:=0 to z do

begin

rekord.liczba:=random(50);

rekord.ciag:=chr(random(94)+32);

push(wsk,rekord)

end;

//writeln('Memavail= ',memavail);

writeln('Licznik stosu wynosi: ',licznik(wsk));

for i:=0 to z do

begin

pop(wsk,rekord);

end;

//writeln('Memavail= ',memavail);

writeln('Licznik stosu wynosi: ',licznik(wsk));

readln;

end.

http://forum.4programmers.net/Delphi_Pa … _na_stosie