Die Zählvariable einer for-Schleife ist nach dem Durchlauf immer undefiniert.
Da Du "Playfile(i)" erst nach der Schleife aufrufst >kann< in i irgendein beliebiger Wert stehen.
Probier es mal so:
Delphi-Quellcode:
for i := 0 to listbox1.Count - 1 do
if listbox1.Selected[i] then
begin
{ nun haben wir in i die nummer der selektierten Zeile
da Listbox und Playlist eine identische Reihe der Einträge und gleiche Sortierung
vorweisen, können wir mit dem erhaltenen index den richtigen Eintrag der Playlist
auslesen. }
PlayFile(i);
break;
end;
Ach und wo wir schon dabei sind. Indices in Delphi sind immer nullbasierend. Also sollte deine Schleife von 0 bis ...Count - 1 laufen.