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
[48083] Re:FindComponent 에 관한 질문....
크레브 [kkol] 1136 읽음    2007-02-14 14:06
저한테는 ggAD0게이지 콤포넌트도없고 TBMSpinEdit도 없기때문에
원론적인 코딩 스타일 방법과 디버깅 방법에 대해서만 말씀드릴께요

: ggAD0->Value = ((TBMSpinEdit *)FindComponent("BMSpinEdit1"))->Value;

이와 갈은 코딩은 별로 좋은게 아닙니다.
FindComponent함수에서 제대로 포인터를 리턴할지 알수 없고
혹시 BMSpinEdit1이 없어서 NULL을 리턴한다면
"->Value" 참조하면서 프로그램 죽기 딱 알맞습니다.
그리고 FindComponent 같은 함수에서 리턴 받은 객체 포인터에 대한 참조는 브레이포인트 멈추고
값을 확인하는 디버깅 방법이  잘 안됩니다.

아래와 같이 포인터를 먼저 받고 edt포인터 확인하고
Value 확인해보세요

TBMSpinEdit * edt = ((TBMSpinEdit *)FindComponent("BMSpinEdit1"));
if( edt )
{
   ggAD0->Value = edt->Value;
}

Value 값이 변화가 없다면...
TBMSpinEdit 자체의 값이 왜 안변하는건지 확인하셔야 합니다.

실제 BMSpinEdit1->Value 가 안변하는건지
아니면 FindComponent로 했을때만 안변하는건지

BMSpinEdit1->Value 자체가 안변한거라면 콤포넌트의 이벤트 같은 사용법을 좀더 확인해보셔야 할듯하네요



대마두 님이 쓰신 글 :
: 지금 제가 수정하는 프로그램에
:
: ggAD0->Value = ((TBMSpinEdit *)FindComponent("BMSpinEdit1"))->Value;
:
: 이런 라인이 있습니다
:
: 여기서 ggAD0는 게이지컴포넌트로 Value에 있는 값을 게이지처럼 그래픽화해서 보여주는 것이구요
:
: 이 Value값을 BMSpinEdit1의 Value값으로 바꿔 BMSpinEdit1의 값을 그래픽화 해서 보여주고 싶은데요...
:
: 값이 안나오네요...
:
: 이 라인에 브레이크 포인트를 찍어
:
: BMSpinEdit1의 값을 주고
:
:  ((TBMSpinEdit *)FindComponent("BMSpinEdit1"))->Value 값을 보면 그냥 0으로 나옵니다...
:
: FindComponent 가 값을 못읽어 오는건지...
:
: 원래 이렇게 사용이 안되는건지 모르겠네요....
:
: 어떻게 하면 값을 받을수 있을지 알려주세요

+ -

관련 글 리스트
48082 FindComponent 에 관한 질문.... 대마두 893 2007/02/14
48083     Re:FindComponent 에 관한 질문.... 크레브 1136 2007/02/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.