ListViewである条件下の行を削除したい

解決


ito  2010-03-15 10:56:53  No: 38030  IP: 192.*.*.*

こんにちは。
DELPHI2010を使っています。

ListViewである条件下の行を削除したいのですが、
削除によって行数が減る事を考慮する方法が思いつきません。

行数が減っているので後半でエラーが出てしまいます。
どうすれば行数の減りを考慮できるか・・・
ぜひアドバイスをお願いいたします。


  for i := 0 to ListView1.Items.Count - 1 do
  begin
    str1 := Copy(ListView1.Items[i] , 0, 3);
    if str1 = '[済]' then
    begin
      ListView1.Items.Delete(i);
      //i:= i -1; //←この方法は許してくれない
    end;
  end;


例:ListViewの内容が下記の場合に後半でエラー発生
  [済]あああ
  [済]いいい
  [済]ううう
  [未]えええ
  [未]おおお

編集 削除
D  2010-03-15 11:27:27  No: 38031  IP: 192.*.*.*

後ろから削除するようにすれば大丈夫なんじゃないでしょうか。

  for i := ListView1.Items.Count - 1 downto 0 do
  begin
    str1 := Copy(ListView1.Items[i] , 0, 3);
    if str1 = '[済]' then
    begin
      ListView1.Items.Delete(i);
    end;
  end;

編集 削除
ito  2010-03-15 13:29:11  No: 38032  IP: 192.*.*.*

おおおっ><
発想の転換。
ありがとうございました!!

編集 削除