Wenn du Delete(0) machst, dann wird der erste Eintrag gelöscht, und der vorher zweite Eintrag wird zum ersten (Index 0)!!!
Also:
Delphi-Quellcode:
i := 0;
while i < ListBox1.Items.Count do
if ListBox1.Items[i] = schueler.Text then
ListBox1.Items.Delete(i)
else
Inc(i);