Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.755 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Problem mit doppelt Verkettete Liste - Zeiger - Wie? ^^

  Alt 17. Nov 2008, 18:28
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
Klaus
  Mit Zitat antworten Zitat