말 그대로 입니다.
여러분들...TCollectionList에 데이터를 3개 넣었구여...
다음 for 문을 돌면서....2개를 삭제 합니다.
그런데...연속해서 데이터를 삭제 해 버리니..out of bounds(0) 어쩌구..
저쩌구..나오면서 프로그램이 뻗어 버립니다.
분석을 해 보니...for 문을 돌면서 처음 데이터를 삭제하면...데이터는
삭제 되지만...다음 for 문을 돌면서 오면..그 지운 데이터의 Row 공간이
임시로 남게 되더라구요...
그래서 그 Row 영역 공간에서 데이터는 이미 삭제 되었는데..다음 데이터
영역으로 갈려고 하니...죽어 버리는 것 같은데...
데이터를 지울 때는 MyList.Items[i].free 해서 지웠습니다만....
고수님덜....TcollectionList에서 연속으로 데이트를 삭제 할려면 어찌 해야
하나여?
ㅠ.ㅠ 제발 좀 갈쳐 주세엽...
수거여~~~
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에서 연속으로 데이트를 삭제 할려면 어찌 해야
> 하나여?
>
> ㅠ.ㅠ 제발 좀 갈쳐 주세엽...
> 수거여~~~
>