2016-07-29 4 views
8

중첩 된 열거 형을 델파이에 자체 네이밍 영역에 추가 할 수 있습니까?델파이에서 중첩 된 열거 형의 네임 스페이스

이 코드는 두 개의 열거 형에 모두 "알 수 없음"이 포함되어 있으므로 E2004 : 식별자를 다시 선언합니다. C++ 열거 요소의 식별자에

TMyType1 = class 
public type 
    TMyType1Enum = (unknown, val1, val2); 
public 
    constructor Create(); 
    ... 
end; 

TMyType2 = class 
public type 
    TMyType2Enum = (unknown, other1, other2, other3); // causes E2004 
public 
    constructor Create(); 
    ... 
end; 

은 모두 전혀 다른 범위에서 (TMyType1 : 알 수없는 및 TMyType2 :: 알 수없는)이었다.

식별자 (MyType1EnumUnknown, MyType1EnumVal1, ..., MyType2Enumunknown, ...)의 접미사 또는 접미사를 제외하고는 델파이에서 이와 같은 작업을 수행 할 수 있습니까?

+1

아래의 답변은 완벽하지만 코딩 표준의 관점에서 접두사는 일반적으로 열거 형용으로 Delphi에서 사용됩니다. 예를 들어 'TFontStyle'을 살펴보십시오. 정의는 다음과 같습니다 :'TFontStyle = (fsBold, fsItalic, fsUnderline, fsStrikeOut)' – Graymatter

답변

10

시도 $SCOPEDENUMS. http://docwiki.embarcadero.com/RADStudio/en/Scoped_Enums_(Delphi) :

type 
    TFoo = (A, B, Foo); 
    {$SCOPEDENUMS ON} 
    TBar = (A, B, Bar); 
    {$SCOPEDENUMS OFF} 

begin 
    WriteLn(Integer(Foo)); 
    WriteLn(Integer(A)); // TFoo.A 
    WriteLn(Integer(TBar.B)); 
    WriteLn(Integer(TBar.Bar)); 
    WriteLn(Integer(Bar)); // Error 
end; 
+0

FWIW, docwiki가 지금 오프라인 상태 인 것 같습니다. 그러나 Delphi/RAD Studio와 함께 제공되는 설치된 도움말 파일에서 동일한 설명서를 찾을 수 있습니다. 우리는 여기에서 링크 할 수 없습니다. –