2014-07-23 4 views
3

저는 델파이 6을 사용하고 있습니다. 프로젝트를 만들고 두 개의 유닛 Unit1Unit2을 추가했습니다.
나는 XML 노드에 대한 상수로 XML_DIAGRAM='Diagram_Data'이라는 이름의 상수를 가지고 있습니다. 또한 동일한 상수를 Unit2에 선언했지만 다른 값인 'Diagram_Name'을 사용하여 주 장치에있는 두 단위를 사용하고 있습니다. 제 질문은 상수 XML_DIAGRAM에 액세스 할 때 항상 상수 값 인 Unit2을 포함한다는 것입니다.
동일한 이름의 상수가 여러 단위로 선언 된 경우 사용자가 요청할 때 Delphi가 어떤 단위에서 어떤 상수를 결정 하는가?델파이의 다른 단위에서 같은 이름의 상수

내 코드

:

unit Unit1; 
const 
DIAGRAM = 'Diagram_Data'; 
end. 


unit Unit2;   
const 
DIAGRAM = 'Diagram_Name';  
end. 


uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs,Unit1,Unit2; 
+4

델파이에 대해 많이 알지 못하고 (물론 파스칼 지식 대부분을 잊어 버렸습니다.) 이름 앞에 단위 이름을 붙일 수는 없습니까? Unit1.DIAGRAM과 Unit2.DIAGRAM처럼? [범위 지정에 대한이 자습서] (http://delphi.about.com/od/beginners/l/aa060899.htm)는 어쨌든이를 나타냅니다. –

+4

Unit2의 우선 순위가 가장 높은 이유는 분명히 말할 수는 없지만 Unit2의 선언이 Unit1의 우선 순위를 대체하도록 IDE에 의해 Unit1 이후에로드되기 때문에 가능할 수 있습니다. 어쨌든 공유 단위로 상수의 이름을 복제하는 것은 끔찍한 관습입니다. XML_DIAGRAM_NAME 및 XML_DIAGRAM_DATA라고 부르는 것이 어떻습니까? –

+0

예, 우리는이 방법을 사용할 수 있습니다. 그러나 델파이가 어떤 상수를 사용할지 결정하는 방법을 알고 싶습니다.이 경우 컴 플리 시간 오류가 발생해서는 안되며, 동일한 이름의 상수가 단위에서 사용됩니다. –

답변

5

동일한 이름을 가진 일정한 경우는 다음 여러 단위로 선언하는 방법을 델파이 decid 어떤 단위에서 사용자가 요청할 때 취할 상수인가?

documentation이 시나리오는 처리 방법에 대해 설명합니다

유닛을 uses 절에 표시되는 순서가 초기화의 순서를 결정하고 식별자가 컴파일러에 의해 위치되는 방식에 영향을 미칩니다. 두 단위가 같은 이름의 변수, 상수, 유형, 프로 시저 또는 함수를 선언하면 컴파일러는 uses 절에서 마지막에 나열된 단위의 변수를 사용합니다.이 (다른 장치에서 식별자에 액세스하려면 규정 추가해야합니다 :. UnitName.Identifier를)

그래서, 질문의 시나리오에서, DIAGRAMUnit2에 정의 된 심볼을 의미합니다. uses 절은 Unit1, Unit2Unit2 순서대로 단위를 나열하기 때문입니다. uses 절의 순서를 반대로하면 이고 DIAGRAM은 에 정의 된 기호를 나타냅니다.

설명서에는 정규화 된 이름을 사용하여 원하는 기호를 명시하는 방법도 나와 있습니다. Unit1.DIAGRAM 또는 Unit2.DIAGRAM으로 작성하십시오.

마지막으로 알아야 할 점 중 하나는 다른 단위로 같은 이름을 사용하는 것이 혼란을 막는 방법이라는 것입니다. 이를 피하기 위해 코드를 작성하는 방법을 찾는 것이 좋습니다.

관련 문제