AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Wie lösche ich eine komplette Liste? (Pointer)
Thema durchsuchen
Ansicht
Themen-Optionen

Wie lösche ich eine komplette Liste? (Pointer)

Ein Thema von Wusel · begonnen am 25. Okt 2003 · letzter Beitrag vom 27. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#1

Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:13
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


in diesem Sinne
Wusel
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:17
In einer Schleife von hinten nach vorne durchgehen und die Elemete löschen.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:17
Meinst du eine verkettete Liste? Wenn ja, musst du jedes Element einzeln löschen (via Dispose()).
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#4

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:20
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:27
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]
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#6

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:43
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
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 14:56
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 15:02
steig am besten auf TList um, das hat jeder und ist total einfach zu handhaben.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 15:10
...ist aber leider eine sequenzielle Liste und keine verkettete. Soll heißen: die Vorteile einer verketteten Liste gehen verloren.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Benutzerbild von Wusel
Wusel

Registriert seit: 27. Sep 2003
Ort: Riesa
54 Beiträge
 
Delphi 6 Personal
 
#10

Re: Wie lösche ich eine komplette Liste? (Pointer)

  Alt 25. Okt 2003, 15:10
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;
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 03:29 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