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