문제

내 패키지 세트를 재정렬하려고합니다 TFRAME-DESCENDENT 구성 요소, 나는 전자가 팔레트에 진정한 구성 요소로 등록되어 있고 때로는 대화 상자 양식을 사용합니다. 대화 상자 양식은 차례로 세 번째 패키지의 일부인 비 시각 구성 요소에 의해 호출됩니다. 이것, 지금까지, 대부분의 컴파일러를 만드는 것 같습니다 의존성 관련 불만 / 혼란이 사라집니다. (그러나 나는 아직 나가지 않았다).

대화 상자 양식으로 패키지를 컴파일 할 때 (프레임이라고 부르는), 나는 경고를 받고있다 "Unit 'MyFrames'가 암시 적으로 패키지 'MyDialogforms'로 가져옵니다."

컴파일러 경고로 표시되었다는 점을 감안할 때, 나는 오랫동안 "암시 적으로 가져 오기"가 일반적으로 좋은 것이 아니라는 인상을 받았습니다. 그렇지 않은 곳에 구체적인 사례가 있습니까? 즉, 단위를 암시 적으로 가져 오는 것이 정상이고/또는 적절한 관행인가? ... 그렇다면 특정 사례는 무엇입니까?

도움이 되었습니까?

해결책

다음은 다음과 같습니다.

당신은 당신의 프로그램에 단일 사본을 가질 수 있습니다. 패키지를 통해 동일한 장치를 두 번로드하려고하면 예외가 발생하고 패키지가 두 번째로로드되지 않습니다. 이를 피하는 방법은 패키지를 구조화하여 패키지 중 하나 이상에 유닛이 사용되지 않도록하는 것입니다.

컴파일하는 모든 장치에 대한 코드는 패키지에 있어야합니다. 컴파일러는 당신이 선언하는 모든 장치로 시작합니다. 포함 섹션이지만 해당 장치가 사용하는 다른 장치는 또한 컴파일되어야하므로 해당 장치가 아래에 나열된 다른 패키지에 포함되어 있지 않으면 도달 할 수 있습니다. 필요합니다. 이 엑스트라는 "암시 적으로 수입 된"장치입니다. 문제는 수입된다는 것입니다 암시 적으로, 명시 적으로 언급되지 않았습니다 포함 프로젝트 관리자가 오른쪽으로 편리하게 표시되는 섹션. 이것은 당신이 당신의 장치가 패키지에 있다는 것을 알지 못하고 결국 다른 것을 넣을 수 있음을 의미합니다. 그런 다음 프로그램을 실행하고 패키지를로드하려고하면 물건이 나옵니다. 그렇기 때문에 컴파일러가 경고하는 이유입니다.

이유가 있기 때문에 오류가 아니라 경고입니다. 시스템의 작동 방식을 이해하는 한 내재적 인 수입을 사용하는 것이 기술적으로 안전합니다. 그 유닛들은 당신이 그들을 선언하든 아니든 패키지에서 끝나고 있음을 기억하십시오. 그러나 다시 말하지만, 그들이 당신이 그들을 선언하든 아니든 결국 끝나기 때문에 공식적으로 추가하고 번거 로움을 구하는 것이 더 간단 할 것입니다.

다른 팁

+1 용 메이슨의 대답. 암시 적으로 추천 된 유닛이 문제가되는 곳은 대규모 프로젝트에 있으며 어디에서나 연결된 유닛을 추적하기가 기하 급수적으로 더 어려워집니다.

지금까지 가장 좋은 방법은 패키지 당 폴더를 갖는 것이며 해당 폴더에는 패키지의 모든 파일이 포함되어 있습니다. "암시 적 가져 오기"경고가 표시되면 필요한 패키지를 추가하거나 패키지에 장치를 추가합니다. 따라서 모든 장치는 패키지에 포함되어 있으며 모두 동일한 폴더에 있습니다. 모든 프로젝트는 모든 파일에 대해 직접 알고 있기 때문에 검색 경로에 폴더를 추가하지 않습니다.

구조는 실제로 유지하기가 크게 어렵지 않으며 다른 장치에 다른 버전의 파일이 포함 된 문제로부터 당신을 보호합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top