델파이 폼 파일(DFM) 로딩 버그

2 Comments

며칠 전 짧은 일정으로 대만에 있는 고객사에 다녀왔습니다…

고객사의 공장에서 고객이 직접 요청하는 기능을 현장에서 바로 프로그래밍 해주고 돌아 왔는데…
급히 코딩하고 있는 와중에 기능 테스트를 하려고 간단한 데이터 가공 프로그램을 만들고 있었습니다.
아래 그림처럼 폼 위에 TButton 콤포넌트를 올려 놓고 버튼을 클릭하면 무언가 동작을 하도록 코딩을 했습니다.
사용자 삽입 이미지
코딩을 마치고 컴파일….!!
사용자 삽입 이미지
정상적으로 컴파일이 완료 되었고
바로 실행…!!
그런데….
화면이 바로 안뜨고 한참을 기다리게 하더니 아래 그림처럼 Stack Overflow 에러를 내뱉어 버리네요…
사용자 삽입 이미지
“엇… 왜 이러지…?” 하면서 Break 버튼을 누르고 Call Stack을 살펴보니
사용자 삽입 이미지
DFM 파일에서 폼을 로딩하면서 먼가 오류가 발생한것 같더군요…
버튼 하나 밖에 없는 폼이 왜 로딩하면서 에러가 날까…?  
한참 디버깅하며 삽질을 하다가 발견한 어이없는 에러…!!
바로… 첫번째 그림처럼 델파이 콤포넌트 파레트에서 TButton을 검색해서 폼에 추가하는 작업을 하다가 무언가 조작 실수로 폼의 이름을 Button으로 입력해 버린겁니다…
폼에서 사용하고 있는 콤포넌트의 클래스 이름을 폼 이름으로 사용해 버리면 이런 현상이 발생하는 거였습니다.즉 TForm에서 상속 받은 폼의 클래스 이름이 TButton이 되어 버려서 문제가 된것으로 보입니다.
Delphi 2007하고 Delphi 2010에서 확인해 봤는데 같은 증상이더군요…
조심해서 사용하면 되겠지만 IDE에서 이런 오류는 사전에 경고를 띄워주거나 VCL의 DFM 로딩 루틴에 개선이 필요할 것 같습니다.
추가:
엠바카데로 Quality Central에 보고함… 티켓