Einzelnen Beitrag anzeigen

knocko

Registriert seit: 9. Jun 2008
14 Beiträge
 
#9

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

  Alt 17. Nov 2008, 13:17
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

Code:
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;
end;

Das ist mein Vorwärts-Button

Code:
procedure TForm1.BitBtn4Click(Sender: TObject);    // Vorwärts blättern
begin
  if akt^.Next <> NIL then                                                     { ** Wenn akt^.Next Inhalt aufweist, dann... ** }
    begin
      akt := akt^.Next;                                                        { ** ...geh bei jedem Klick auf den Vorwärts-Button ein Listenglied weiter. ** }
      Edit1.Text := IntToStr(akt^.id);                                             { ** Trägt die aktuellen ("akt") Werte, bei dem der Zeiger steht, in die Edit-Komponenten ** }
      Edit2.Text := akt^.titel;
    end
  else
    begin
      Edit1.Text := IntToStr(akt^.id+1);                                       { ** Wenn das Ende erreicht ist, werden die Felder so vorbereitet, dass man gleich ein neues Element eintragen kann ** }
      Edit2.Text := '';
    end;
end;

Der Button sorgt dafür, dass ich wieder am Anfang der Liste lande

Code:
procedure TForm1.BitBtn1Click(Sender: TObject);    // Erste Glied anzeigen lassen
begin
  akt := anf;                                                                  { ** Zeiger wird auf das erste Record gesetzt ** }
  Edit1.Text := IntToStr(akt^.id);                                             { ** Trägt die Werte vom ersten Listenglied in die Editkomponenten ein ** }
  edit2.Text := akt^.titel;
end;



Achso und PS:
Das Tutorial hab ich schon runtergeladen.
Ist eines von vielen auf meinem Desktop
Wie gesagt -> Fast alle Google Links sind Lila
  Mit Zitat antworten Zitat