Zitat von
knocko:
Der Button soll:
a) Entweder neues Element in die Liste einfügen und dann die Felder quasi "vorbereiten", sodass ein neues nächstes Element eingetragen werden kann
b) oder (wenn schon eins vorhanden ist) soll er das vorhandene blos überschreiben bzw. aktualisieren und automatisch zum nächsten Listenglied wandern und anzeigen
Der Fall b) würde ja eintreffen, wenn ich Rückwärts in der Liste gehe.
Das ist mein "Übernehmen" Button.
Von mir aus kannst du auch andre Variablennamen nutzen. Die Namen sind nur ausm Internet rauskopiert :(
Dazu hab ich noch deinen Quelltext genommen
zu Deinem Punkt b, ein Feld ist immer dann vorhanden wenn die Liste nicht leer ist.
Delphi-Quellcode:
procedure TForm1.BitBtn3Click(Sender: TObject); // Elemente einschreiben in Liste
begin
new(h1);
h1^.id := StrToInt(Edit1.Text) +1;
h1^.titel := Edit2.Text;
Edit1.Text := IntToStr(h1^.id);
h1^.Next := NIL;
if anf = NIL then
begin
anf := h1;
end
else
if akt^.Next <> nil then
begin
Edit1.Text := IntToStr(akt^.id);
Edit2.Text := akt^.titel;
end
else
begin
Edit2.Text := '';
Edit1.Text := IntToStr(akt^.id+1);
end;
akt := h1; // hier machst Du dir die Liste kaputt
end;
Wenn Du ein Feld überschreiben willst, solltest Du nur den Inhalt überschreiben,
nicht auch noch die Adresse des Feldes.
Wenn Du ein Feld hinzufügen willst, musst Du mit new() ein Feld erstellen
und dieses an die Liste anhängen.
Der Einfachheit halber würde ich das mit zwei Buttons machen wollen
einen mit Namen "hinzufügen" und einen mit Namen "überschreiben".
Auch solltest Du noch darauf achten bei Deinem Pointer das Element prev zu versorgen,
denn sonst gibt es Probleme in der Liste nach vorne zu wandern.
.. und noch ein Link zu
dynamischen Datenstrukturen.
Musst Du mit Pointerlisten arbeiten, wenn nicht, kannst Du dir mal
dynamische Array oder auch die Klasse TList anschauen.
Grüße
Klaus