liste := liste.next;
du solltest bei deinen Schleifen nicht die "Start"-Variable nutzen, denn so änderst du diese und deine List verschwindet, da diese Variable danach auf nil steht
Delphi-Quellcode:
templist := liste;
while templiste <> nil do begin
templiste := templiste.next;
end;