델파이 XE2의 Namespace 문제
2011.12.22 23:02
델파이 XE2에서 변화된 사항중 하나가 네임스페이스를 사용하기 시작했다는 것입니다. 네임스페이스는 자바 혹은 C#에서 주로 사용하던 것인데, 델파이 XE2에서 파이어버드 프레임워크를 사용하기 시작하면서 파이어버드와 기존 VCL을 구분하기 위해서 네임스페이스를 도입하여 사용하기 시작 했습니다.
예를들면 기존의 Forms 유닛은 Vcl.Forms 로 Windows 유닛은 Winapi.Windows로 바꾸어 사용하게 됩니다. 물론 기존에 쓰던 방식대로 Forms, Windows로 사용해도 별문제 없이 잘 되어야 합니다.
하지만 가끔씩 알수 없는 오류로 인해 이전 버전에서 쓰던 방식의 네임스페이스가 오류를 일으키는 사례가 있는것 같습니다. 오류의 정확한 원인은 알 수 없지만 오류를 고칠 수는 있습니다.
아래의 그림은 프로젝트의 Options 입니다 SHIFT-CTRL-F11 키를 누르거나 CTRL+.의 IDE Insight에서 unit scope name을 찾으면 창을 열 수 있습니다. 항목중에 Unit Scope Names 항목이 빈칸으로 남아 있는 경우가 가끔씩 발생하는 모양입니다. 이때 기존의 유닛명이 참조 되지 않는 오류가 발생하는 것입니다.
오류를 해결하는 방법은 Unit Scope names의 +버튼을 눌러 확장해보면 플랫폼별 컨피규레이션에 있는 데이터값을 복사해서 항목을 채워 주는방법입니다만 혹시라도 플렛폼별 컨피규레이션에도 데이터가 존재 하지 않는다면 아래의 데이터를 복사해서 항목을 채워 주시면 됩니다.
Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell