2009-10-09 5 views
3

다음 하위 범위 열거 선언이 작동하는 동안 :델파이 : 연속되지 않는 하위 범위 열거 형을 갖는 방법?

type 
    TReceiptCode = 'A'..'F'; 

이것은 그렇지 않습니다 :

type 
    TReceiptCode = ' ','A'..'F', 'R'; 

도 않습니다

type 
    TReceiptCode = ' ','A','B','C','D','E','F','R'; 

불 연속 값으로 하위 범위 형식을 선언 할 수 있습니까?

+3

마지막 예는 하위 질문 유형이 아닙니다 (질문 제목과 반대). TReceiptCode = (rcspace, rcA, rcB, rcC, rcD, rcE, rcF, rcR)을 선언 할 수 있습니다. ReceiptCodeStr : TReceiptCode의 배열 = ('', 'A', 'B', 'C', 'D', 'E', 'F', 'R'); – Argalatyr

+0

Argalatyr의 의견은 완벽하게 유효하며 완벽하게 실행할 수있는 솔루션을 제공해 왔습니다. 그러니 공격 할 필요가 없습니다. – Despatcher

답변

5

불행히도, 나는 그렇게 할 방법이 없다고 생각합니다. 비 연속적 (새로운) 열거 형 또는 기존 유형의 하위 범위를 선언 할 수 있지만 둘 다 선언 할 수는 없습니다.

+0

아무도 솔루션으로 지난 4 개월 동안 나왔으므로 아무 것도 없습니다. 수락 됨. –

4

대신 세트를 사용해도 될까요?

TSomeCharSet= Set of Char; 

SomeChars: TSomeCharSet = [' ','A','B','C','D','E','F','R']; 

는 할머니와 계란 상황이 될 수 있지만 ...

당신이 :)을 위해 다음 사용중인 모르겠어요 그럼 모두 당신이 다음 세트 또는 배열을 사용하여 자신을 TNonContigousCharRange을 만드는 남아 있습니다 범위를 벗어나는 경우 또는 비슷한 일을하는 SetReceiptCode 프로 시저가있는 경우 예외를 발생시킵니다. 단순히 단서가 유형의 이름에 있음을 추가 할 이전의 모든 답변을

+0

유형은 현재 Char로 정의됩니다. 그 유형에 할당 할 수있는 문자의 값을 제한하고 싶습니다. –

+0

오, 아니, 세트가 작동하지 않습니다. 그 이유는 세트가 단일 값이 아닌 값 세트를 취하기 때문입니다. –

+0

세트가 작동하더라도 컴파일러에서 자동으로 값을 확인하는 것은 아니므로 직접 설정 한 멤버십을 테스트해야하지만 매우 간단하게 달성해야하는 데이터 구조를 정확하게 제공합니다. – Deltics

3

: 서브

간단히 말하자면 범위는 범위 낮은 및 상한이있다. 당신이 설명하는 것은 세트 (또는 서브셋)입니다. 서브 범위가 아니기 때문에 으로 표현할 수 없습니다.

+0

당신 말이 맞아요. 나는 해당 용어가 "모순 (oxymoron)"이라고 생각합니다. 경멸적인 것이 아니라 모순적인 용어가 포함 된 문구를 단순히 설명하는 것입니다. – Argalatyr

+0

내가 뭘하려고하는지 델파이의 "적절한"용어를 모르기 때문에 나는 "용어"를 만들고 있다는 것을 잊지 마라. Delphi는 내가 원하는 것을 할 수 없다는 것을 밝혀 내므로 "공식적인"용어가 없으므로 작성 기간이 유효합니다. 누군가는 내가 성취하려고하는 다른 이름을 발명 할 자유가 있습니다. –

+1

당신은 요점을 놓치고 있습니다 : 질문 : "왜이 데칼레이션 작업을 하위로하지 않습니까?" A : "하위 영역이 아니기 때문에 다른 것입니다." 네, 맞습니다. 필요한 "다른 것"은 델파이에 존재하지 않습니다. 하지만 "하위 범위"*는 델파이에서 달성하려는 목표에 부합하지 않는 의미를 지니고 있기 때문에 유효합니다. *는 "집합"임). – Deltics

관련 문제