Einzelnen Beitrag anzeigen

Klaus01

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

Re: Was ist falsch an meiner Liste

  Alt 12. Jan 2007, 08:16
Zitat von MrSpock:
Hallo schuetzejanett,

wenn du einen neuen Punkt einfügst, setzt du root ja immer auf diesen neuen Punkt.
Da schaut aber nicht so aus:
Delphi-Quellcode:
procedure TPlayer.pointsAdd(point: Tshot);
var
   knot : TLPoints;
begin
  if f_points = nil then
    begin
      New(root);
      f_points := root;
      f_points^.shot := point;
      f_points^.next := nil;
    end
  else
    begin
      new(knot);
      f_points^.shot := point; // hier liegt der Fehler
      f_points^.next := knot;
      f_points := knot;
      f_points^.next := nil;
    end;
end;
root wird nur dann gesetzt wenn f_points = nil ist, d.h. wenn die Liste leer ist.
Oder habe ich da etwas übersehen?

@Janett

Setzt Du zu Beginn f_points auf nil?
Denn eine leere Liste hat nicht zwangsläufig den Wert/die Adresse nil.

Delphi-Quellcode:
procedure TPlayer.pointsAdd(point: Tshot);
var
   knot : TLPoints;
begin
  if f_points = nil then
    begin
      New(root);
      f_points := root;
      f_points^.shot := point;
      f_points^.next := nil;
    end
  else
    begin
      new(knot);
      //f_points^.shot := point; // hier liegt der Fehler
      f_points^.next := knot;
      f_points := knot;
      f_points^.next := nil;
      f_points^.shot := point;
    end;
end;
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat