For i:=0 to ListBox1.Count-1 do
    begin
     if  ListBox1.Items.Strings[i]='会计' then ListBox1.Items.Delete(i);
    end;
   但是delete后ListBox1.Count会变,导致出错,请问怎么删除ListBox1中值为“会计”的项?

解决方案 »

  1.   

    经典问题,这么做
    For i:=ListBox1.Count-1 to 0 do
        begin
         if  ListBox1.Items.Strings[i]='会计' then ListBox1.Items.Delete(i);
        end;
      

  2.   

    解决方法二:
    i:=0;
    while i<ListBox1.Count do
         if  ListBox1.Items.Strings[i]='会计' then 
              ListBox1.Items.Delete(i)
         else i:=i+1;
      

  3.   

    For i:=ListBox1.Count-1 downto 0 do
    begin
      if  ListBox1.Items.Strings[i]='会计' then ListBox1.Items.Delete(i);
    end;
      

  4.   

    还有另一种方法:while ListBox1.Items.IndexOf('会计')>=0 do
      ListBox1.Items.Delete(ListBox1.Items.IndexOf('会计'));