AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Problem mit doppelt Verkettete Liste - Zeiger - Wie? ^^
Thema durchsuchen
Ansicht
Themen-Optionen

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

Offene Frage von "knocko"
Ein Thema von knocko · begonnen am 17. Nov 2008 · letzter Beitrag vom 22. Nov 2008
Antwort Antwort
Klaus01
Online

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

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

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


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz