Einzelnen Beitrag anzeigen

schuetzejanett

Registriert seit: 5. Apr 2006
Ort: Fraureuth
62 Beiträge
 
#1

Was ist falsch an meiner Liste

  Alt 10. Jan 2007, 22:51
Hallo,

habe das Problem mit den dynamischen Arrays und der Größenänderung noch mal überdacht und wollte es deswegen mit einer einfach verketteten Liste probieren.
Könnt ihr mal gucken ob das so stimmt.
Beim eintragen merke ich zwar keine Fehler weiß allerdings nicht ob das alles so richtig ist oder ob er die Werte wieder überschreibt und bei der ausgabe(erstellt zur Zeit nur nen String der die Werte enthält zu Testzwecken) also show Methode knallts beim Aufruf.

Was mache ich falsch und sollte ich ändern? Ist der Destruktor so richtig ?

Delphi-Quellcode:
// die Definition der Liste

Type TShot = Array[0..2] of String;
 
      TLPoints = ^TPoints;

      TPoints = Record
          shot : TShot;
          next : TLPoints
      end;


//die eigenschaaften/ felder der klasse
type TPlayer = class(TObject)
  private
   f_name :String;
   f_stand: integer;
   f_finished: boolean;
   f_place: integer;
   f_points : tLPoints;
   f_fields : tAFields;
   root : tLPoints;

//die Methoden zum hinzufügen und ausgeben
 procedure pointsAdd(point : Tshot);
 procedure pointsShow(var s :String);

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;
      f_points^.next := knot;
      f_points := knot;
      f_points^.next := nil;
    end;

end;

procedure TPlayer.pointsShow(var s :String);
var
    i,j : integer;
begin
f_points := root;
i := 1;
s := inttostr(i) + '. ter Wurf: ';
while f_points.next^.next <> nil do
  begin
    for j := 0 to 3 do
    s:= s+ f_points^.shot[j] + ' ';
    f_points := f_points^.next;
  end;
  s := s+#13#10;
end;
 
//der Destruktor
destructor TPlayer.Destroy;
begin
setlength(f_fields, 0);
f_points := root;
while f_points^.next <> NIL do
  begin
    Root := f_points;
    f_points := Root^.Next;
    Dispose(Root);
  end;
 Dispose(F_points);
inherited Destroy;
end;
  Mit Zitat antworten Zitat