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
[9439] Re:TStrings::AddObject()의 이상한 점
권대길.한꼬맹이 [onekid] 1135 읽음    2001-07-28 19:43
jonglee 님이 쓰신 글 :
:
: 비교적 많이 쓰는 함수인데 요즘 이상한 점을 발겼했습니다.
: AddObject()의 두 번째 파라메터(TObject*)에 TObject의
: 포인터가 아닌 다른 상수 값을 넣으려고 하는데
: 이 값이 -1인 경우에는 TStrings::Objects[]에 들어가질 않습니다.
:
: 예를 들어
:
:      TStrings *list;
:      ...
:      list->AddObject("first", (TObject) -1);
:
: 이런 식으로 작성하면 list->Strings[0]에는 "first"라는 아이템이
: 들어가지만, list->Objects[0]에는 아무것도 들어가지 않습니다.
: 이것을 보려고 하면 익셉션이 뜨는군요.
:
: -2, -3도 괜찮은데 오직 -1만 안되는걸로 봐서
: 이 함수의 내부에서 뭔가 특별한 용도로 쓰는것 같기도 하고..
: 헬프에도 없고... 버그인가?
:
: 암튼 그렇습니다.
: 별로 고민될 것도 없는 부분에서 이런 문제가 생겨서
: 몇 시간 고생했네요. 흑.

안녕하십니까?

한꼬맹이 입니다.

이상하네요...

TStrings 추상클래스라서 인스턴스 생성할수 없을텐데요...

그렇다면 TStrings에서 상속받은 클래스라고 가정한다면...

AddObject()메소드의 두번째인자에 들어가는 것은 TObject로 부터 상속받은 모든 클래스의 포인터 주소를

말합니다, 즉 VCL에서만 사용하는 모든 클래스가 해당되는 거죠.. 이것은 다시 컴퓨터 입장에서는

클래스의 메모리상의 시작주소를 뜻하는 거죠,,,

그렇니까 결론은 TObject로 상속받은 클래스의 포인터만 들어갈수 있다는겁니다..

그럼 참고하세요 

+ -

관련 글 리스트
9394 TStrings::AddObject()의 이상한 점 jonglee 947 2001/07/27
9439     Re:TStrings::AddObject()의 이상한 점 권대길.한꼬맹이 1135 2001/07/28
9459         Re:Re:TStrings::AddObject()의 이상한 점 jonglee 1171 2001/07/30
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.