AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit verketteter Liste

Ein Thema von Koller · begonnen am 14. Jan 2007 · letzter Beitrag vom 14. Jan 2007
Antwort Antwort
Koller

Registriert seit: 22. Mär 2005
59 Beiträge
 
#1

Problem mit verketteter Liste

  Alt 14. Jan 2007, 19:06
Ich schreibe soeben die Hinzufügen-Routine einer verketteten Liste (TParameterList):
Delphi-Quellcode:
type
  PItem = ^TItem;
  TItem = record
    Data: TParameter;
    Next: PItem;
  end;

procedure TParameterlist.AddAtEnd(AParameter: TParameter);
var NewItem: PItem;
begin
  New(NewItem);
  //das hier tritt immer wieder ein, auch beim zweiten und dritten mal O_o
  if (FFirst = nil) then
  begin
    showmessage('1');
    NewItem.Data := AParameter;
    NewItem.Next := nil;
    
    //warum ist FFirst hier nach immer noch nil?
    FFirst := NewItem;
    FLast := NewItem;

    Dispose(NewItem);
  end
  //dieser Block wird NIE durchlaufen
  else begin
    showmessage('2');
    NewItem.Data := AParameter;
    NewItem.Next := nil;

    FLast.Next := NewItem;
    FLast := NewItem;

    Dispose(NewItem);
  end;

  inc(FCount);
end;

//vlt. liegt's am constructor irgendwie???
constructor TParameterlist.Create;
begin
  FFirst := nil;
  FLast := nil;
  FCurrently := nil;

  FCount := 0;
end;
Das Problem ist mit Kommentaren versehen.
  Mit Zitat antworten Zitat
Der_Unwissende

Registriert seit: 13. Dez 2003
Ort: Berlin
1.756 Beiträge
 
#2

Re: Problem mit verketteter Liste

  Alt 14. Jan 2007, 19:14
Hi,
da wo Du den Kommentar gesetzt hast, ist die Variable nicht mehr nil.
Aber schau dir mal die folgenden Zeilen an und kommentiere was jede dieser Zeilen macht.

Gruß Der Unwissende
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Problem mit verketteter Liste

  Alt 14. Jan 2007, 19:15
Wo ist FFirst deklariert?
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#4

Re: Problem mit verketteter Liste

  Alt 14. Jan 2007, 20:33
Hallo Koller,

du solltest die mit New() erzeugten Elemente nicht direkt nach dem Einfügen in die Liste freigeben, sonst erhältst du Zeiger, die ins Nirwana zeigen. Den Speicherbereich darfst du erst nach dem Entfernen eines Elements aus der Liste wieder freigeben.

Nimm mal die zwei Dispose-Aufrufe aus deinem Code raus und teste erneut.

Gruß Hawkeye
  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 05:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz