자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
Delphi 열거형 종류별로 TypeHelper를 이용
2017.07.17 22:26
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
아래와 같이 열거형을 2개 이상 지정후 TypeHelper를 이용해서 각 열거형 별로 String 을 하나의 함수에서 가지고 올수 있나요?
열거형을 2개 지정한다
TGeoDirection = (North, East, South, West);
TGeoDirectionType2 = (NorthType2, EastType2, SouthType2, WestType2);
TGeoDirectionHelper = record
helper
for
TGeoDirection
function
ToString:
string
; inline;
end
;
function
TGeoDirection
.
ToString:
string
;
begin
case
Self
of
TGeoDirection
.
North: Result :=
'북쪽 (N)'
;
TGeoDirection
.
East: Result :=
'동쪽 (E)'
;
TGeoDirection
.
South: Result :=
'남쪽 (S)'
;
TGeoDirection
.
West: Result :=
'서쪽 (W)'
;
else
raise
Exception
.
Create(
'Unknown "TGeoDirection" value'
);
end
;
end
;
TGeoDirectionType2Helper = record
helper
for
TGeoDirection
Type2
function
ToString:
string
; inline;
end
;
function
TGeoDirection
.
ToString:
string
;
begin
case
Self
of
TGeoDirection
.
North: Result :=
'북쪽 Type2 (N)'
;
TGeoDirection
.
East: Result :=
'동쪽
Type2 (E)'
;
TGeoDirection
.
South: Result :=
'남쪽
Type2 (S)'
;
TGeoDirection
.
West: Result :=
'서쪽
Type2 (W)'
;
else
raise
Exception
.
Create(
'Unknown "TGeoDirection" value'
);
end
;
end
;
이렇게 열거형및 TypeHelper 지정후 하나의 함수에서 TypeHelper로 지정한 .ToString을 사용할수 있는 방법 문의 드립니다
GetAllEumnString(TGeoDirection); -> TGeoDirection에 해당하는 열거형의 String 값을 가지고 옴
GetAllEumnString(TGeoDirectionType2); -> TGeoDirectionType2에 해당하는 열거형의 String 값을 가지고 옴
이렇게 할수 잇는 방법 문의 드립니다
Delphi 열거형 종류별로 TypeHelper를 이용
2017.07.17 22:26
본 게시판 사용시 당부 사항
* 이 게시판은 자유롭게 질문을 올리고 자발적으로 답변을 공유하는 게시판입니다.
* 어느 누구도 답변을 달아야만 하는 책임은 없습니다.
* 따라서 질문을 올리실 때에는 최대한 자세하고 정중하게 질문을 올려 주세요.
* 최대한 질문을 자세히 올려야 답변도 자세히 올라 옵니다.
* 본 질문에 답변을 주시는 여러 개발자님들께 미리 감사드립니다.
-----------------------------------------------------------------------------------------------
아래와 같이 열거형을 2개 이상 지정후 TypeHelper를 이용해서 각 열거형 별로 String 을 하나의 함수에서 가지고 올수 있나요?
열거형을 2개 지정한다
TGeoDirection = (North, East, South, West);
TGeoDirectionType2 = (NorthType2, EastType2, SouthType2, WestType2);
TGeoDirectionHelper = record
helper
for
TGeoDirection
function
ToString:
string
; inline;
end
;
function
TGeoDirection
.
ToString:
string
;
begin
case
Self
of
TGeoDirection
.
North: Result :=
'북쪽 (N)'
;
TGeoDirection
.
East: Result :=
'동쪽 (E)'
;
TGeoDirection
.
South: Result :=
'남쪽 (S)'
;
TGeoDirection
.
West: Result :=
'서쪽 (W)'
;
else
raise
Exception
.
Create(
'Unknown "TGeoDirection" value'
);
end
;
end
;
TGeoDirectionType2Helper =
record
helper
for
TGeoDirection
Type2
function
ToString:
string
; inline;
end
;
function
TGeoDirection
.
ToString:
string
;
begin
case
Self
of
TGeoDirection
.
North: Result :=
'북쪽 Type2 (N)'
;
TGeoDirection
.
East: Result :=
'동쪽
Type2 (E)'
;
TGeoDirection
.
South: Result :=
'남쪽
Type2 (S)'
;
TGeoDirection
.
West: Result :=
'서쪽
Type2 (W)'
;
else
raise
Exception
.
Create(
'Unknown "TGeoDirection" value'
);
end
;
end
;
이렇게 열거형및 TypeHelper 지정후 하나의 함수에서 TypeHelper로 지정한 .ToString을 사용할수 있는 방법 문의 드립니다
GetAllEumnString(TGeoDirection); -> TGeoDirection에 해당하는 열거형의 String 값을 가지고 옴
GetAllEumnString(TGeoDirectionType2); -> TGeoDirectionType2에 해당하는 열거형의 String 값을 가지고 옴
이렇게 할수 잇는 방법 문의 드립니다
GetAllEumnString 메소드를 파라메터 타입별로 overload해서 여러 함수를 선언하는 방법이 있습니다.
만약, 하나의 함수에서 여러 열거형을 처리하고 싶다면, RTTI(Run-Time Type Information)라는 기술을 이용해야 합니다.
http://docwiki.embarcadero.com/RADStudio/Tokyo/en/Working_with_RTTI
한번 공부차원에서 시도해 보시죠^^(잘 알아두면 유용합니다.)