var i :integer; 
For i:=0 to ListView1.Items.Count-1 do 
If ListView1.Items.Item[i].Selected then 
begin 
ADOQuery1.Close; 
ADOQuery1.SQL.Add(Format('delete from 表名 where 字段名=%s',[QuotedStr(ListView1.Items[i].SubItems.strings[0])]));
ADOQuery1.ExecSQL; 
ListView1.Items.Delete(i);//删除ListView1里面的相关行 
end; 如果这样写的话,会出现很严重的内存错误提示,断点跟踪发现是For i:=0 to ListView1.Items.Count-1 do 这一句的问题
改成 For i:=listview1.items.count-1 downto 0 do后一切正常,不再提示内存错误,请问为什么?