Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie lösche ich eine komplette Liste? (Pointer) (https://www.delphipraxis.net/10790-wie-loesche-ich-eine-komplette-liste-pointer.html)

Wusel 25. Okt 2003 14:13


Wie lösche ich eine komplette Liste? (Pointer)
 
Hi Leute,
ich hab mal eine Frage:
Ich erstelle mit Hilfe von Pointern eine Liste. Jetzt hab ich aber das Problem dass ich nicht weiß, wie ich die komplette Liste (bzw den Speicher) zum Schluss wieder freigeben kann.
Ich habe mir bereits mit der Suchfunktion viele Beispiele angesehen, aber dort wird immer der kompliziertere Fall, wie man einzelne Elemente löscht, gezeigt. Kann mir bitte jemand ein Beispiel für das Löschen der kompletten Liste zeigen?
Wäre euch sehr sehr sehr ... dankbar :wink:


in diesem Sinne
Wusel

Luckie 25. Okt 2003 14:17

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
In einer Schleife von hinten nach vorne durchgehen und die Elemete löschen.

Chewie 25. Okt 2003 14:17

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
Meinst du eine verkettete Liste? Wenn ja, musst du jedes Element einzeln löschen (via Dispose()).

Wusel 25. Okt 2003 14:20

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
Ja ich meine eine verkettete Liste. Wie geh ich eine Liste von hinten nach vorn durch? Daran scheiterte es ja die ganze Zeit bei mir :?

SirThornberry 25. Okt 2003 14:27

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
arbeitest du mit TList???
wenn ja

Delphi-Quellcode:
for i := 0 to Liste.count - 1 do
begin
  dispose(PIrgendwas(Liste.Items[i]));
end;
Liste.clear;
[edit=Christian Seehase]Delphi-Tag geschlossen Mfg, Christian Seehase[/edit]

Wusel 25. Okt 2003 14:43

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
nein leider nicht, aber der Code dort hilft mir trotzdem wieder ein Stückchen weiter. Ich bräuchte nur noch irgendwie den Befehl (?) damit ich ein Element zurück kann.
p^.Next springt ja zum nächsten also bräucht ich sowas wie p^.zurück :|

Chewie 25. Okt 2003 14:56

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
Du kannst das auch vorwärts machen. Einfach das aktuelle Element sichern, dann zum nächsten weitergehen und nun das gesicherte (also den Vorgänger) löschen.

SirThornberry 25. Okt 2003 15:02

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
steig am besten auf TList um, das hat jeder und ist total einfach zu handhaben.

Chewie 25. Okt 2003 15:10

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
...ist aber leider eine sequenzielle Liste und keine verkettete. Soll heißen: die Vorteile einer verketteten Liste gehen verloren.

Wusel 25. Okt 2003 15:10

Re: Wie lösche ich eine komplette Liste? (Pointer)
 
Naja das mit dem TList muss ich auch mal versuchen.
Wegen dem löschen von vorn nach hinten hab ich mir ne Procedur geschrieben. Wird bei der die ganze Liste gelöscht oder bleibt da zum Schluss was übrig?

Delphi-Quellcode:
  procedure DelWholeList
  begin
    while (pFirst <> nil) do
    begin
      p := pFirst;
      pFirst := pFirst^.Next;
      Dispose(p);
    end;
  end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:21 Uhr.
Seite 1 von 2  1 2      

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 by Thomas Breitkreuz