Einzelnen Beitrag anzeigen

Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#14

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 18:15
Also hier mal der Code eventuell seht ihr den Fehler

Delphi-Quellcode:
type
  PZahl = ^TZahl;
  TZahl = record
    Next : PZahl;
    iZahl : Integer;
    dwWann : Cardinal;
  end;

Var
  p, // Hilfvariable, genauso wie p2
  pFirst, // gibt immer die 1. Zeile an
  p2 : PZahl;

procedure AddItem(iNumber : Integer; dwZeit : Cardinal);
begin
  New(p); // holt Speicher
  p^.iZahl := iNumber; // setzt die Zahl in den Speicher
  p^.dwWann := dwZeit;
  p^.Next := nil; // setzt letztes Element auf nil
  if pFirst = nil then // setzt die erste Zeile, wenn noch nicht vorher gemacht
    pFirst := p
  else
  begin
    p2 := pFirst;
    while (p2^.Next <> nil) do // wandert an die letzte Zeile
      p2 := p2^.Next;
    p2^.Next := p;
  end;
end;

procedure DelWholeList;
begin
  while (pFirst <> nil) do // es wird solange gelöscht, bis pFirst nil ist
  begin // und das ist wenn die Liste zu ende ist
    p := pFirst;
    pFirst := pFirst^.Next;
    Dispose(p);
  end;
end;
Wo liegt da der EInvalidPointer Fehler
  Mit Zitat antworten Zitat