Delphi [델파이 문법] 문법 요소 #7
2012.10.29 19:06
타입 캐스트
표현식이 다른 타입인 것처럼 다루는 것이 유용할 경우가 있습니다. 이를 위해 타입 캐스트
(typecast)을 이용하여 표현식의 타입을 일시적으로 변화시킬 수 있습니다. 예를 들어,
Integer(‘A’)는 A를 정수로 변환합니다.
타입 캐스트의 문법은 다음과 같습니다.
![1.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/5df60514dcd5c1d449e44e47a24aab4f.png)
표현식이 변수인 경우에는 변수 타입 캐스트라고 부릅니다. 그 외의 경우는 값 타입 캐스트
입니다. 변수 타입 캐스트와 값 타입 캐스트의 문법은 동일하지만, 두 종류의 타입 캐스트에
는 서로 다른 규칙이 적용됩니다.
값 타입 캐스트
값 타입 캐스트(value typecast)에서는, 타입 식별자와 타입 캐스트 표현식은 모두 서수
(ordinal) 타입이거나 포인터 타입이어야 합니다. 값 타입 캐스트의 예는 다음과 같습니다.
![2.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/9dd965d4a1fe9e55251e77575dc9ee2a.png)
결과 값은 괄호 안의 표현식을 변환함으로써 얻습니다. 지정된 타입의 크기가 표현식의 타입
크기와 다른 경우 잘리거나 늘어날 수도 있습니다. 표현식 부호는 항상 유지됩니다.
문법이 다음과 같을 경우
![3.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/27c138dea7860677ccf44e2939f32262.png)
이 문법은 Integer(‘A’)의 값, 즉 65를 변수 I에 대입합니다.
값 타입 캐스트 뒤에는 한정자가 올 수 없고, 대입문의 왼쪽에 나타날 수 없습니다.
변수 타입 캐스트
어떤 변수든 어떤 타입으로도 타입 캐스트할 수 있지만, 크기가 동일하고 정수와 실수를 함
께 사용하지 않아야 합니다. (숫자 타입을 타입 캐스트하려면 Int와 Trunc 같은 표준 함수를
사용하십시오.) 변수 타입 캐스트의 예는 다음과 같습니다.
변수 타입 캐스트는 대입문의 어느 쪽이든 사용할 수 있습니다. 따라서 다음과 같은 경우,
![4.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/df7919d019563bf2e8d0e3bd7d5c6f68.png)
변수 타입 캐스트는 대입문의 어느 쪽이든 사용할 수 있습니다. 따라서 다음과 같은 경우,
![5.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/33f93b3d911618e18d88b55b367a206e.png)
이 문장은 MyChar에 z 문자(ASCII 122)를 지정합니다.
변수를 프로시저 타입으로 변환할 수도 있습니다. 예를 들어, 다음과 같이 선언한 경우,
다음과 같은 대입문들이 가능합니다.
다음의 예와 같이 변수 타입 캐스트를 한정자 와 함께 사용할 수 있습니다.
![6.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/f05e606017c3ac208fa5342332bed33e.png)
다음과 같은 대입문들이 가능합니다.
![7.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/5952cc49b317b9f226f3495001c62311.png)
다음의 예와 같이 변수 타입 캐스트를 한정자 와 함께 사용할 수 있습니다.
![8.png](http://tech.devgear.co.kr/files/attach/images/108/021/009/81f4e857141597a53f254698b0bd57e2.png)
이러한 예에서, TByteRec는 워드의 하위 및 상위 바이트를 액세스하는 데 사용되고,
TWordRec은 longint의 하위 및 상위 워드를 액세스하는 데 사용됩니다. 같은 목적으로 델
파이에 내장된 함수 Lo와 Hi를 호출할 수도 있지만, 변수 타입 캐스트는 대입문의 왼쪽에서
사용할 수 있는 잇점이 있습니다.
타입 캐스트 포인터에 대한 내용은 4장의“포인터와 포인터 타입”절을 참조하십시오. 클래
스와 인터페이스 타입 캐스트에 대한 내용은 6장의“클래스 참조”절의“as 연산자”와 11장
의“인터페이스 참조”절의“인터페이스의 타입 캐스트”을 참조하십시오.