Q&A

  • TCollectionList 에서 연속으로 데이트를 삭제 할 시에는?
말 그대로 입니다.



여러분들...TCollectionList에 데이터를 3개 넣었구여...

다음 for 문을 돌면서....2개를 삭제 합니다.



그런데...연속해서 데이터를 삭제 해 버리니..out of bounds(0) 어쩌구..

저쩌구..나오면서 프로그램이 뻗어 버립니다.

분석을 해 보니...for 문을 돌면서 처음 데이터를 삭제하면...데이터는

삭제 되지만...다음 for 문을 돌면서 오면..그 지운 데이터의 Row 공간이

임시로 남게 되더라구요...



그래서 그 Row 영역 공간에서 데이터는 이미 삭제 되었는데..다음 데이터

영역으로 갈려고 하니...죽어 버리는 것 같은데...



데이터를 지울 때는 MyList.Items[i].free 해서 지웠습니다만....

고수님덜....TcollectionList에서 연속으로 데이트를 삭제 할려면 어찌 해야

하나여?



ㅠ.ㅠ 제발 좀 갈쳐 주세엽...

수거여~~~



1  COMMENTS
  • Profile
    김준영 2001.09.03 23:57
    요렇게 해보세요



    for i:=collection.Count-1 downto 0 do

    begin

    collection.items[i].Free;

    end;

    원리는 간단하죠...콜렉션의 끝에서부터 지워 나가면 문제가 없지용!~

    그럼~





    왕궁뎅이 wrote:

    > 말 그대로 입니다.

    >

    > 여러분들...TCollectionList에 데이터를 3개 넣었구여...

    > 다음 for 문을 돌면서....2개를 삭제 합니다.

    >

    > 그런데...연속해서 데이터를 삭제 해 버리니..out of bounds(0) 어쩌구..

    > 저쩌구..나오면서 프로그램이 뻗어 버립니다.

    > 분석을 해 보니...for 문을 돌면서 처음 데이터를 삭제하면...데이터는

    > 삭제 되지만...다음 for 문을 돌면서 오면..그 지운 데이터의 Row 공간이

    > 임시로 남게 되더라구요...

    >

    > 그래서 그 Row 영역 공간에서 데이터는 이미 삭제 되었는데..다음 데이터

    > 영역으로 갈려고 하니...죽어 버리는 것 같은데...

    >

    > 데이터를 지울 때는 MyList.Items[i].free 해서 지웠습니다만....

    > 고수님덜....TcollectionList에서 연속으로 데이트를 삭제 할려면 어찌 해야

    > 하나여?

    >

    > ㅠ.ㅠ 제발 좀 갈쳐 주세엽...

    > 수거여~~~

    >