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
[42692] Re:[질문] Label->Caption.printf(
이현진 [cyberpd] 996 읽음    2005-11-28 13:36
younkwan 님이 쓰신 글 :
: Label->Caption.printf("%d", err");
: 와같이 하면 보여야 하지 안나요?
: 아니면 별도로 화면에 update하는 함수를 call해야 하는지요?
:
: AnsiString msg;
: msg.printf("%d", err);
: Label->Caption = msg;
: 와 같이 해야 되더군요.
:
: 어떤 차이점이 있는건가요?
:
: 수고하세요.

Label->Caption이 "property" 라서 그렇습니다.
도움말에 property 키워드에 대해 보면, 내부 변수에 대한 접근 제어를 한다고 되어 있네요.

외부에서 객체 내부 변수에 대한 직접 접근을 방지하고, 객체마다 특정 속성(attribute)의 접근 제어를 구현할 수 있도록 하는것 같습니다.

Label->Caption은 내부적으로 Label->GetText() 함수를 통해 caption 문자열 객체의 복사본을 반환하네요.
__property AnsiString Caption = {read=GetText, write=SetText, stored=IsCaptionStored};

(Label->Caption).printf() 함수는  Label->GetText 함수에 의해 반환된 임시 문자열 객체의 .printf() 함수를 호출
하므로, Label 내부의 Caption 데이터는 변경되지 않습니다.
'=' 연산자를 통해서만 Label->SetText 함수가 호출되어 내부 Caption 데이터를 변경하네요.

'AnsiString msg' 와 같이 임시 변수를 사용하지 않으려면 아래와 같이 할 수도 있습니다.

Label->Caption=Label->Caption.printf(..);

+ -

관련 글 리스트
42689 [질문] Label->Caption.printf("%d", err"); 화면에 안보여요 younkwan 779 2005/11/28
42692     Re:[질문] Label->Caption.printf( 이현진 996 2005/11/28
42694         감사합니다. 이윤관 638 2005/11/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.