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
[951] [답변] 말근샘물/ 오피스97 스타일 메뉴 컴포넌트 사용시 에러/프포
박지훈.임프 [cbuilder] 3805 읽음    1999-01-16 07:07
안녕하세요. 천리안 프로그래머포럼 C++Builder 담당자 임펠리테리입니다.

음.. 자려고 하다가.. 말근샘물님은 올간만이시니까.. 답변을 드리고 잘께요.

Ambiguity 어쩌구.. 하는 에러는, 말그대로 모호하다는 뜻입니다.

C++에는 네임스페이스(namespace)라는 개념이 있는데, 다 설명드리려면 넘

장황해지고, 일단 클래스도 네임스페이스에 속하고, 또 이 네임스페이스마다

각각의 네이밍을 하기 때문에 네임스페이스가 다르면 같은 이름의 식별자를 가질 수

있습니다. 그런데.. vcl과 같은 대규모의 클래스 라이브러리, 더욱이 서드파티

컴퍼넌트들로 인한 확장까지 고려하면, 의도적이거나 혹은 우연히 식별자의 이름이

같아지는 수가 있습니다. 그러면 당연히 이 같은 이름을 가진 식별자들을 구별해주

어야 하는데.. 이럴때 네임스페이스 이름을 앞에 달아주고 ::해줌으로써 구별해주는

겁니다. 기본적인 vcl 엔 TForm이란 클래스이름은 하나뿐이라서, 그냥 TForm이라고

써주면 되지만, TAni~어쩌구 컴퍼넌트에 Tform을 상속받는 Tform이 또 하나 있죠.

그래서 네임스페이스 이름을 명시해줘야 합니다. 여기까지는 문제가 없죠.

메뉴아이템.. 이것도 사실, 말근샘물님이 하신 것이 맞습니다. 하지만 한가지

조치가 빠졌죠. 뭐냐면..

헤더파일에서 자동생성된, 그러니까 __published: 섹션에 있는 항목들은 반드시

폼 리소스(.dfm)의 각 엔트리(필드)와 1:1로 일치해야만 합니다. 말씀하신 에러

"Error in module ... :Incorrect field declaration in class ..."

이게 생기는 경우가 바로 이 경우입니다. 그러니까, dfm에는 TMenuItem으로 되어

있는데 헤더파일에서 AnimatedMenu98::TMenuItem로 했으니 1:1로 일치가 안되죠.

그러니까.. dfm 파일을 텍스트로 고친 다음 네임스페이스 이름을 적어주면 됩니다.

그런데 문제는, 이렇게 불일치 에러가 난 이후에는 어떤 동작을 해도, 그래서

view as text로 해서 보려고 해도 에러때문에 아무것도 안됩니다.

저장도 안되구요.

그래서.. 당장 생각나는 것은, 최악의 방법이군요. 일단 처음에 ambiguity 에러가

날때 저장하고, 빌더 바깥에서 폼은 convert.exe로 텍스트로 바꾸어서 편집하고

헤더도 역시 마찬가지로 편집한다음 불러들인다.. 이거 골때리는군요.

매번 프로젝트를 시작할때마다, 그리고 메뉴아이템을 추가할때마다 이렇게한다?

그건 곤란하겠고.. 근본적으로 문제를 잡으려면, 아무래도 animatedmenu 내의

메뉴아이템 선언을 손봐서, 이름을 바꿔놔야겠네요.

흠.. 다른 방법은 없을까..

아이고.. 골치아프네요. 일단은 위와 같은 방법으로 넘어가시구요.

방법이 떠오르면 다시한번 언급하도록 하겠습니다.

그럼 참고하시길..




독립문에서 임펠리테리였습니다.

(cbuilder, cbuilder@thrunet.com)



+ -

관련 글 리스트
950 [질문] 오피스97 스타일 메뉴 컴포넌트 사용시 에러/프포 말근샘물 3902 1999/01/16
951     [답변] 말근샘물/ 오피스97 스타일 메뉴 컴포넌트 사용시 에러/프포 박지훈.임프 3805 1999/01/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.