Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Endlosschleife (https://www.delphipraxis.net/30439-endlosschleife.html)

Pseudemys Nelsoni 24. Sep 2004 20:16


Endlosschleife
 
Delphi-Quellcode:
  if Halter^.text = Text then
  begin
    // wenn das zu löschende item am anfang(Halter) ist
    i := Halter^.next;
    Dispose(Halter);
    Halter := i;
  end
  else
  begin
    // wenn das zu löschende item in der mitte oder am ende ist
    i := Halter;
    while (i^.next <> nil) do
    begin
      if i^.next^.text = Text then
      begin
        p := i^.next^.next;
        Dispose(i^.next);
        i^.next := p;
      end;
    end;
  end;


kann mir jemand sagen was hier falsch ist? Der erste teil funktionier einwandfrrei, möchte ich aber ein item aus meiner verketteten liste löschen das in der mitte/am ende ist endet das in einer endlossschleife, jemand ahnung warum?

i, und p sind lokale variablen, erstere ist nur dazu gedacht durch die ganze kette zu laufen, p hält am ende nur einen pointer fest, damit ich das item löschen kann.

xineohp 24. Sep 2004 20:26

Re: Endlosschleife
 
Delphi-Quellcode:
  if Halter^.text = Text then
  begin
    // wenn das zu löschende item am anfang(Halter) ist
    i := Halter^.next;
    Dispose(Halter);
    Halter := i;
  end
  else
  begin
    // wenn das zu löschende item in der mitte oder am ende ist
    i := Halter;
    while (i^.next <> nil) do // i wurde nie geändert!
    begin
      if i^.next^.text = Text then
      begin
        p := i^.next^.next;
        Dispose(i^.next);
        i^.next := p;
      end
      else i := i^.next; // diese Zeile fehlte! 
    end;
  end;

Pseudemys Nelsoni 24. Sep 2004 20:29

Re: Endlosschleife
 
vielen dank, funzt :mrgreen:


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz