Forum: Programmieren allgemein
by DeddyH,
30. Aug 2010
Da ich zu der Überzeugung gekommen bin, dass das mit Worten schwieriger zu beschreiben ist als mit Code, ausnahmsweise (aus der hohlen Hand getippt, daher ohne Gewähr):
procedure TForm1.ButtonEntfernenClick(Sender: TObject); //Button entfernt markierte Einträge aus der Liste
var zaehler: integer;
PCurrent, //Zeiger auf das aktuelle Listenelement
PPrior, //Zeiger auf den...
Forum: Programmieren allgemein
by DeddyH,
30. Aug 2010
Du hast eine Schleife zuviel. Entweder Du gehst mit der For-Schleife die Items der Listbox durch oder mit der While-Schleife die Liste. Ich würde die 2. Möglichkeit favorisieren, wie in meinem Pseudocode gezeigt.
Forum: Programmieren allgemein
by DeddyH,
30. Aug 2010
Das Hauptproblem ist hier: eine verkettete Liste ist nicht indiziert, die Items der ListBox aber schon. Du wirst also einen "internen Zähler" implementieren müssen. Dabei hat das Wurzelelement der Liste den Zählwert 0, dessen Nachfolger dann die 1 usw.
Pseudocode:
Zaehler := 0;
z := Wurzel;
while z <> nil do
begin
if ListBox.Items.Selected(Zaehler) then
AusListeLöschen;
z...
Forum: Programmieren allgemein
by DeddyH,
30. Aug 2010
Du willst innerhalb der For-Schleife die komplette verkettete Liste bis auf die Wurzel freigeben?
Forum: Programmieren allgemein
by DeddyH,
30. Aug 2010
Ich würde es übrigens andersherum machen: zuerst aus der verketteten Liste löschen und dann die Listbox komplett neu aus dieser Liste füllen, dann sieht man auch, ob alles funktioniert hat. Wenn es sich nicht um allzuviele Einträge handelt und man BeginUpdate/EndUpdate beim Befüllen der ListBox verwendet, sollte das auch ausreichend performant sein.
Forum: Programmieren allgemein
by DeddyH,
29. Aug 2010
Eine Frage vorweg: handelt es sich um eine Hausaufgabe, oder wieso verwendest Du eine einfach verkettete Liste? Da es sich ja eh nur um Strings handelt, könntest Du sonst genausogut eine TStringlist verwenden, das wäre um Längen einfacher. Der Vollständigkeit halber aber hier die Vorgehensweise:
- Durchiterieren der Liste
- wenn Nachfolgeelement das gesuchte ist, dessen Nachfolger merken (1)
-...