关于删除Listview某行数据的问题

sinopf 2009-04-21 12:02:21

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后一切正常,不再提示内存错误,请问为什么?
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bdmh 2009-04-21
  • 打赏
  • 举报
回复
删除的问题,记住要从后向前删,否则将会引起错误,因为从前向后删,每删一条记录,ListView1.Items.Count就会发生改变,所以很容易引起越界的错误
zshsuming 2009-04-21
  • 打赏
  • 举报
回复
删除记录之后,再刷新就好了```不一定要删除行来解决啊``
sinopf 2009-04-21
  • 打赏
  • 举报
回复
明白了,谢谢你们!

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧