C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[59707] Re:Re:Re:Re:Tlist에 사이즈 질문입니다.
사악왕 [] 856 읽음    2010-01-11 14:37
그럼 for문으로 해서 루프를 돌려서 특정부분을 지우는 방법은 어려운거네요
14가 있다고 하면
한개를 지울 때 마다 14에서 13로 12로 떨어 지고
루프문은 올라가니까 6이나 7,8 에서 에러가 떨어 질테니깐요
많은 질문을 보니까
delete (void *)a->Items[0];
a->Delete(0);
으로 많이 들 하지만 그건 처음부터 지우니까.. 특정한 부분을 못지우고요..
헉... 이거 문제네요 헉.....

Lyn 님이 쓰신 글 :
: 0~99 번 까지 루프를 돈다 칩시다..
: 그리고 3번을 지웠다고 가정합시다..
: 그럼 인덱스가 0~98로 재배열되죠. 근데 루프에선 99번을 접근하니까 List Index OB 뜨는게 당연한거죠..
:
: 사악왕 님이 쓰신 글 :
: : for(int i=0 ; i<a->Count;i++)
: :  {
: :     if(a->intsetID == 3)
: :    {
: :      delete (void *)a->Items[i];
: :      a->Delete(i); <-- 추가 했습니다.....
: :    {
: : {
: : 이렇게 하니까 List index out of bounds 에러가 생겼습니다.....
: : 다 제거가 되어야 되는건 아닌지요 ?
: : Lyn 님이 쓰신 글 :
: : : 제 눈에는 메모리에서 제거하는 코드만 보이고 리스트에서 빼는 코드는 안보이네요
: : :
: : :
: : : 사악왕 님이 쓰신 글 :
: : : : Tlist에서
: : : : 1번버튼을 클릭할경우 10개가 입력이 됩니다. 0~9
: : : : 2번버튼을 클릭하면 3번만 지워지게 했습니다.
: : : : for(int i=0 ; i<a->Count;i++)
: : : : {
: : : :    if(a->intsetID == 3)
: : : :   {
: : : :     delete (void *)a->Items[ii];
: : : :      continue;
: : : :    }
: : : : }
: : : : 1번을 한번더 클릭할경우 리스트 카운터가 19가 되어야 하는되 20이 됩니다
: : : : 한마디로
: : : : delete 가 않되었는지....
: : : : a->Clear(); 할경우에는  모든 것이 싹 지워 집니다.
: : : : 크기를 변경을 해야 하는데 그 방법을 아직 못찾아서 이렇게 글을 남김니다.

+ -

관련 글 리스트
59699 Tlist에 사이즈 질문입니다. 사악왕 898 2010/01/11
59704         Re:Re:Tlist에 사이즈 질문입니다. 사악왕 912 2010/01/11
59707                 Re:Re:Re:Re:Tlist에 사이즈 질문입니다. 사악왕 856 2010/01/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.