So richtig wie im Tut isses nicht wirklich
In Liste steht doch das erste Element deiner Liste,
wenn du nun diese Variable in einer Schleife direkt benutzt und deren Inhalt (per
Liste := Liste.next; ) änderst, dann änderst du doch auch deren Inhalt
und wenn die schleife bis NIL (
while tempListe <> nil do ) geht, dann steht danach NIL in Liste drin und deine Liste ist leer.
du mußt also zur Benutzung deren Wert in eine 2 Variable speichern, deren Inhalt sich problemlos ändern kann ... somit bleibt der Inhalt der Variable Liste unverändert.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject); //Button für Listenausgabe
var tempListe: PListe;
begin
tempListe := Liste;
while tempListe <> nil do begin
Listbox1.Items.Add(inttostr(tempListe.key) + ': ' + tempListe.text);
tempListe := tempListe.next;
end;
end;
PS: die Variable i könnte einen verständlicheren Namen vertragen (z.B. NaechsteID, LetzteID, NextID oder so)
PSS: die Variable q ist doch eigentlich nur 'ner temoräre lokale Variable und sollte deswegen direkt in den Prozeduren (Button1Click, Button3Click, Button4Click und Button5Click) definiert sein.
dein q entspricht
hlp : PMYELEMENT; in dem Tut
und tempListe entspricht sozusagen dem
wrk : PMYELEMENT;