Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi while schleife (https://www.delphipraxis.net/30427-while-schleife.html)

Pseudemys Nelsoni 24. Sep 2004 16:11


while schleife
 
moin,

ich prüfe in einer verketten liste auf "NIL" sobald das eintritt wird die schleife abgebrochen, ich muss sie aber dazu bringen exakt 1mal mehr zu durchzulaufen. mein code sieht so aus:

Delphi-Quellcode:
  while (i^.next <> nil) do
  begin
    Listbox1.Items.Add(i^.nick);
    i := i^.next;
  end;
  Listbox1.Items.Add(i^.nick);
funktioniert auch einwandfrei... aber kann ich mir das doppelte "Listbox1.Items.Add(i^.nick);" nicht irgendwie sparen und mit in der schleife ausführen lassen?

Nothine 24. Sep 2004 16:14

Re: while schleife
 
wie wärs mit
Delphi-Quellcode:
while (i <> nil) do
begin
  Listbox1.Items.Add(i^.nick);
  i := i^.next;
end;
müsste an sich auch funzen, da beim zuweisen von I := I^.Next ja höchstens (das gesuchte) I == nil auftreten kann...

Dax 24. Sep 2004 16:16

Re: while schleife
 
Definiere noch ein Feld "Prev" und checke immer so:
Delphi-Quellcode:
while (i^.Prev <> NIL) do
...

Pseudemys Nelsoni 24. Sep 2004 16:16

Re: while schleife
 
ja komisch, nun gehts, ich hatte das shconmal genauso probiert da gings nich...komische sache :mrgreen:

danke jedenfalls ;)

Hansa 24. Sep 2004 16:32

Re: while schleife
 
Zitat:

Zitat von Pseudemys Nelsoni
...komische sache :mrgreen:

Komisch, aber auch gefährlich. Wundere dich nicht, wenn der Rechner irgendwann hängen bleibt/Schutzverletzung usw. NIL dient dazu den Anfang oder das Ende einer verketteten Liste abzufangen. Deshalb wird normalerweise die Liste mit NIL initialisiert. Dann kannst du mit
Delphi-Quellcode:
while Liste <> NIL
überprüfen, ob es noch zulässig ist auf den Speicherbereich zuzugreifen.

Mit new muß dieser Speicherplatz reserviert werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:33 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