![]() |
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. |
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; |
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