У меня всё работает:
Код:
var i:integer = 0;
procedure TForm1.Button1Click(Sender: TObject);
var lz: TStrings;
begin
lz:= ListBox1.Items;
lz.Delete(i+1);
lz.Delete(i+1);
lz.Insert(((i+1) mod lz.Count),'new');
end;
Но это для видимых строк. По-видимому, путаница с указателями и размерами.