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
[3386] [질문] 더불어 희안한 현상 발견
ghost [] 3400 읽음    2000-04-27 00:00
임문환님의 답글 잘 봤습니다.
사실 빌더 초보로서 이것저것 건드리는 와중에 가르쳐주신 방법인
   menuitem->OnClick = MyHandler;
을 해봤었던 것도 사실입니다. 그런데 그때는 안됐었거든요..

그 현상은 이렇습니다. 다음의 코드를 봐주세요.

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    ..... 중간생략 ....

    MRUManager1->RecentMenu = PopupMenu1->Items;
    MRUManager1->LoadFromIni(inip, szMRU1);

    FilenameEdit1->Text = MRUManager1->Strings->Strings[0];
    FilenameEdit1->Text = MRUManager1->Strings->Strings[1];  // 여기요~
    PopupMenu1->Items->Items[0]->OnClick = MRU1Click;
    PopupMenu1->Items->Items[1]->OnClick = MRU1Click;
}

Rxlib의 TMRUManager와 TFilenameEdit를 이용하는 부분이구요..
ini 파일에서 MRUManager가 읽을 아이템이 한 개였다면
제가 "// 여기요~"라고 코멘트한 부분에서 런타임에 에라가 발생하겠죠.
그런데 프로그램이 다운되는게 아니라 assert failure일 때 나오는
에라 메시지하고 MRUManager가 보내는 에라 메시지 두 개가 나온 후에
프로그램이 정상적으로 돌더군요.

이 상태에서 팝업메뉴의 OnClick이 동작하지 않더라는 겁니다.
마지막줄에 브레이크 포인트를 잡아놓고 스텝으로 실행시켰더니
역시 문제가 있는 코드에서 에라 메지지가 나오더군요.

그런데 다음이 이상했어요. F8을 누르면 다음 문장으로 가는 것이
아니라 ProjectName.cpp에 있는

   Application->Run();

에 커서가 있는 거에요. 즉, 위의 FormCreate()의 나머지 문장은
빼먹고 넘어간 것이죠. 그렇다면 위에서 에라가 난 문장을 실행할 때
에라 메시지가 뜨고 리턴이 됐다는 소리인데 이게 가능한 겁니까?

물론 저 라인을 지우고 나니 OnClick 이벤트 핸들러가 잘 실행이 됬습니다.

+ -

관련 글 리스트
3379 Run-time에 만든 Popup Menu의 Item에 대한 이벤트 핸들러는 어떻게 만들죠? ghost 3465 2000/04/26
3382     Re:Run-time에 만든 Popup Menu의 Item에 대한 이벤트 핸들러는 어떻게 만들죠? 임문환 3797 2000/04/26
3386         [질문] 더불어 희안한 현상 발견 ghost 3400 2000/04/27
3400             Re:[질문] 더불어 희안한 현상 발견 박지훈.임프 3487 2000/04/28
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.