電子書籍の厳選無料作品が豊富!

TListView コンポーネントを配置した、フレーム内で、
ListView1->Items->Clear();
とすると、
「リストのインデックスが範囲を超えています(10)」
という意味の解らないエラーが発生します。

そこで、

int c = ListView1->Items->Count;
for (int i=0; i<c; i++) {
  ListView1->Items->Delete(0);
}

と書き換えると、残り11件のところで削除するときに上記のエラーが発生します。

リストは、33件あります。ViewStyle は、vsReport です。
また、このエラーは、2度目は発生しません。
実行して、最初に Clear() すると発生します。

どうも解らないので、質問しました。
理由や、解決方法をご存じの方、教えて下さい。
よろしくお願いします。

A 回答 (1件)

まず、リストの状態を調べてみるとよろしいかと思います。


要所(リストの状態が変化するとこ)に
#ifdef _DEBUG
AnsiString asViewCount = AnsiString( LisiView1->Items->Count );
OutputDebugString( asViewCount.c_str() );
#endif
デバッグして イベントログを見てみる吉。
情報が足らなければ、sprintfとか Format関数を使って+αが吉と思いますよ。あとはソースコードを追いましょ(^^;
    • good
    • 0
この回答へのお礼

ありがとうございました、解決しました。

いろいろ追っていくと、
別の ListView の OnDeletion でエラーが発生していました。

でもなぜ、Clear() で止まって、
実際にエラーが発生している、
OnDeletion 内で止まらないんでしょうかね?

お礼日時:2002/06/29 14:17

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!