Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.757 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: eintrag auswählen?! verkettete liste..

  Alt 16. Aug 2006, 11:57
Delphi-Quellcode:
lauf:=anfang;
while (lauf.Daten.filmname <> Listview1.Items.Item[Listview1.ItemIndex].Caption) do
  begin
    lauf:=lauf.nach;
    if (lauf=ende) then
      begin
        showmessage('Kein ordnungsgemäßer Eintrag ausgewählt!'); //hier ist der "fehler"
        exit
     end;
  end;
Wenn Dein FilmName im zweitletzen Element (lauf) nicht gefunden wurde
wird innerhalb der While Schleife auf das nächste Element gezeigt,
dies ist das letzte Element. Ende wurde also erreicht und die Message
wird ausgegeben.

Ich weiß nicht, wie Du Deine Liste erstellt hast.
Wenn Dein Listenelement mit der Adresse "ende" Daten enthält wird
es in Deiner Schleifenkonstruktion nie geprüft werden.
Ich würde eine verkettet Liste so anlegen:

nil <-- anfang <--> 2. Element <--> ... <--> 2.letzte Element <--> ende --> nil

Dann würd die Abfrage so aussehen:

Delphi-Quellcode:

lauf:=anfang;
match:= false;

while (lauf <> nil) and not match do
  begin
    match := (lauf.Daten.filmname <> Listview1.Items.Item[Listview1.ItemIndex].Caption);
    lauf:=lauf.nach
  end;

if not match then
  showmessage('Kein ordnungsgemäßer Eintrag ausgewählt!');
Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat