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

解決


ito  2010-03-15 19:56:53  No: 38030

こんにちは。
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 20:27:27  No: 38031

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

  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 22:29:11  No: 38032

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加