Einzelnen Beitrag anzeigen

Neotracer64

Registriert seit: 27. Okt 2004
292 Beiträge
 
Delphi 7 Professional
 
#23

Re: Verkettung ? Fragen für Info-Klausur

  Alt 1. Dez 2005, 18:12
Ich bin auch gerade dabei mich mit Listen zu beschäftigen.

Ich habe versucht das wie folgt umzusetzen, orientiert an dem Code über mir:

Delphi-Quellcode:
PZahl = ^TZahl;
TZahl = record
   Item : Integer;
   Next : PZahl;
end;


type
  TintList = class
  Zahl : TZahl;
  PFirst : PZahl;
  constructor Create;
  procedure Add(Int: Integer);
  //procedure Delete(Index: Integer);
  //function Get(index: Integer): Integer;
end;

...

constructor TintList.Create;
begin
  inherited Create;
  Zahl.Item := 0;
  Zahl.Next := nil;
  PFirst := @Zahl;
end;

...

procedure TintList.Add(int: Integer);
var
  Digit: PZahl;
  Silk : PZahl;
begin

  //Silk := PFirst^.next; <-- IST FALSCH!!!!
    Silk := PFirst;


  If Silk <> nil Then
     while (Silk^.Next <> nil) do
        Silk := Silk^.next;

  New(Digit);
  Digit^.Item := int;
  Digit^.Next := nil;
  Silk^.Next := Digit; /// <--- Hier WAR er abgestürzt jetz gehts wieder...
end;
Nur wenn ich eine Zahl zu der Liste hinzufügen möchte, stürzt er Mit EAccessViolation ab. . An der Adresse 00000004 kann er nicht schreiben steht dann zusätzlich da.

Aber eigentlich sollte die Routine einfach das letzte Element finden, was dann ja Silk sein soll. Und das darf unmöglich auf 00000004 zeigen.

Wie kann das denn sein. Ich blic da nich durch

EDIT: Habs rausgefunden. Ich habe es oben korrigiert und die falsche Zeile auskommentiert.
  Mit Zitat antworten Zitat