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
[71128] Re:Re:Re:고수님들 델파이 >> c++ 변환 관련 질문입니다 부탁드립니다 ㅠ
장성호 [nasilso] 3122 읽음    2014-03-28 15:05
Delphi와 C++의  Type-Cast 문법이 다릅니다.
델파이에 객체는 모두 Pointer라고 보시면 됩니다.

그러니.. 아레 구문은
TmoDrawObject(ActiveSurface->DrawObjects->Items[iObj])->InheritsFrom(__classid(TText)

다음과 같이 바뀌어야 할 것입니다.
(( TmoDrawObject *)ActiveSurface->DrawObjects->Items[iObj])->InheritsFrom(__classid(TText)


그리고
TmoDrawObject  클래스가 TObject를 상속받아야 위 메소드가 있습니다.

그럼..


최원용 님이 쓰신 글 :
: 알려주셔서 감사합니다 ㅠ
:
: 장성호 님이 알려주신대로 한번 짜봤거든요
:
: 근데 >> TmoDrawObject(ActiveSurface->DrawObjects->Items[iObj])
:
:  이쪽 구문에서  에러가 나네요 잘못적용한건가요?? ㅠㅠㅠㅠㅠㅠ
: Delphi==========================================================================================
: procedure iComponentCreate(ActiveSurface : TmoDrawSurface);
: var
:   iObj : integer;
:   iTTextObj, iTpGageObj, iTRectObj, iTImageObj, iTGridObj : integer;
: begin
:   iTTextObj  := 0;
:   iTpGageObj := 0;
:   iTRectObj  := 0;
:   iTImageObj := 0;
:   iTGridObj  := 0;
:   with ActiveSurface do
:   begin
:     for iObj := DrawObjects.Count-1 downto 0 do
:     begin
:       if TmoDrawObject(DrawObjects.Items[iObj]) is TText then
:       begin
:         iTTextObj := iTTextObj + 1;
:       end
:     end
:   end
: end
: C++=============================================================================================
:
: void __fastcall iComponentCreate(TmoDrawSurface *ActiveSurface)
: {
:   int iObj, iTTextObj = 0, iTpGageObj = 0, iTRectObj = 0, iTGridObj = 0;
:
:   //TmoDrawObject();
:
:   for (iObj = ActiveSurface->DrawObjects->Count; iObj <= 0; iObj--){
:     if(TmoDrawObject(ActiveSurface->DrawObjects->Items[iObj])->InheritsFrom(__classid(TText) ))
:     {
:       iTTextObj = iTTextObj + 1;
:     }
:
:
:   }
: }
: ==============================================================================================
:
:
:
:
:
: 장성호 님이 쓰신 글 :
: : Delphi에서 is 연산자는 동적으로 객체의 타입검사를 수행하는 연산자입니다.
: :
: : if ( object is Class )  코드에서
: :
: : object 가 Class의 인스턴스 이거나 상속을 받은경우 true   아닌경우 false를 return 합니다.
: :
: :
: :  c++ Builder에서 is 연산자는 존재하지 않구요
: :
: : TObject 클래스에 비슷한 메소드가 있습니다.
: :
: : InheritsFrom 이라는 함수입니다.
: : 대충 다음과 같은 식으로 사용하시면 됩니다.
: :
: :
: : void __fastcall TForm3::Button1Click(TObject *Sender)
: : {
: : 	if( Sender->InheritsFrom(__classid(TCustomForm) ))
: : 	{
: : 		ShowMessage("Sender is Form");
: : 	}
: : 	else if( Sender->InheritsFrom(__classid(TCustomButton) ))
: : 	{
: : 		ShowMessage("Sender is Button");
: : 	}
: : 
: : }
: : 

: :
: :
: :
: : // 조상을 제외한 정확히 특정 클래스인지 확인은 문자열로 다음과 같이 확인하실수 있습니다.
: :
: : void __fastcall TForm3::Button1Click(TObject *Sender)
: : {
: :         
: : 	if( Sender->ClassNameIs("TForm3") )
: : 	{
: : 		ShowMessage("Sender is Form3");
: : 	}
: : 	else if( Sender->ClassNameIs("TButton") )
: : 	{
: : 		ShowMessage("Sender is Button");
: : 	}
: : }
: : 

: :
: :
: : 기타  TObject 클래스에는
: :  ClassName / ClassType등을 가져오는 함수나 프로퍼티가 있습니다.
: :
: :
: : 참조하세요
: :
: : 그럼..
: :
: :
: : 최원용 님이 쓰신 글 :
: : : Class1 은 class 입니다.
: : :
: : : B 는 Component 함수의 인자 입니다.
: : :
: : : procedure Component(B : Class2);
: : :
: : : begin
: : : if Class1(B.C.Items[iObj]) is Class3 then
: : : .
: : : .
: : : .
: : : end
: : :
: : : 이런 식으로 class를 사용하였는데요 if절 쪽
: : :
: : :
: : : Class1에의 의미를 잘모르겠습니다..
: : :
: : :
: : : is 연산자쪽에서는 Class1 과 Class3쪽 어느 부분을 비교하는 것인지 이해가 잘 되지않습니다..
: : :
: : :
: : : 고수님들의 많은 조언 부탁드립니다..

+ -

관련 글 리스트
71121 고수님들 델파이 >> c++ 변환 관련 질문입니다 부탁드립니다 ㅠ 최원용 2713 2014/03/28
71122     Re:고수님들 델파이 >> c++ 변환 관련 질문입니다 부탁드립니다 ㅠ 장성호 3107 2014/03/28
71125         Re:Re:고수님들 델파이 >> c++ 변환 관련 질문입니다 부탁드립니다 ㅠ 최원용 2771 2014/03/28
71128             Re:Re:Re:고수님들 델파이 >> c++ 변환 관련 질문입니다 부탁드립니다 ㅠ 장성호 3122 2014/03/28
71129                 Re:Re:Re:Re:고수님들 델파이 >> c++ 변환 관련 질문입니다 부탁드립니다 ㅠ 최원용 2727 2014/03/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.