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
[25245] Re:[질문]Tlist에 대한 질문 입니다. Items[]는 왜 못쓰죠?
임문환 [mhlim] 844 읽음    2003-04-17 05:05
int  iVals[10];
위 배열이라면
iVals[0] ~ iVals[9] 가 유효한 배열원소들입니다(각 원소가 갖는 값과는 상관 없이).
iVals[10]부터는 액세스하게 되면 오류입니다.


TList의 Items는 내부의 동적인 포인터 배열을 액세스하기 위한 property로서
위의 일반적인 배열과 대부분 같지만 다음 사항에 있어서 조금 다릅니다.
현재 20 개의 원소의 포인터를 저장하기 위한 메모리(Capacity)가 할당되어 있더라도 실제 유효한 원소의 갯수(Count)가 5개라면  Items[5] 부터는 액세스하게 되면 님이 제시한 오류를 발생시킵니다.

원소의 갯수(Count)는 Add, Clear, Remove, Delete 메서드를 호출할 때 증감합니다.

TList의 인스턴스를 생성 후 Add를 호출하기 전까지는 Count는 0입니다.
쉽게 말하면 int iVals[0];과 같은 상황입니다(물론,크기가 0인 배열은 못만들지만 설명을 위한 것임).
이러한 상황에서 iVals[0], iVals[1], iVals[2] ... 을 액세스한 게 님의 코드입니다.

실제로 그렇지는 않지만, 이해하기 쉽게 하려면 Add를 호출할 때마다 내부 배열의 크기가 증가한다고 생각하면 되겠습니다.
(Remove, Delete를 호출하면 감소하고 Clear를 호출하면 0이 되고..)


TList::Items[index]에 대입(=)을 한다고 해서 Add()되는 것이 아닙니다.
= 연산자는 index가 유효범위 이내인 경우에 한해서 해당 위치의 값을 읽거나 변경하는 것입니다.


최민희 님이 쓰신 글 :
: 소스는 대략 이렇습니다. 그냥 간단히 함수 하나 만들어 봣어요
:
: //---------------------------------------------------------------------------
: void __fastcall TForm1::Button1Click(TObject *Sender)
: {
:     TList *list = new TList;
:     TestTList(list);
:
:     for(int i = 0; i <= list->Count-1 ; i++)
:     {
:        Memo1->Lines->Add( list->Items[i] );
:     }
:     delete list;
: }
: //---------------------------------------------------------------------------
: void TestTList(TList *list)
: {
:     for(int i = 0; i <= 100 ; i++)
:     {
:         list->Items[i] = "aaaaaaaaaa";
:     }
: }
: //-------------------------------------------------------------------------
:
: 『list->Items[i] = "aaaaaaaaaa";』 이부분에서 에러가 나더라구요
: 『list out of bounds』라는 에러가 떠요..잘못한것두 없는데
: 근데 『list->Add(aaaaaaaaaa);』 를 쓰면 되거든요
: 왜 Items[i]는 왜 안먹히는 거죠?
:
: 언니 오빠들의 답변 기달리겟습니다. 감사합니다.
:

+ -

관련 글 리스트
25244 [질문]Tlist에 대한 질문 입니다. Items[]는 왜 못쓰죠? 최민희 623 2003/04/17
25247     Re:[질문]Tlist에 대한 질문 입니다. Items[]는 왜 못쓰죠? Julien 793 2003/04/17
25245     Re:[질문]Tlist에 대한 질문 입니다. Items[]는 왜 못쓰죠? 임문환 844 2003/04/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.