Delphi [델파이 문법] 문법 요소 #7

2012.10.29 19:06

관리자 조회 수:5790

타입 캐스트

표현식이 다른 타입인 것처럼 다루는 것이 유용할 경우가 있습니다. 이를 위해 타입 캐스트
(typecast)을 이용하여 표현식의 타입을 일시적으로 변화시킬 수 있습니다. 예를 들어,
Integer(‘A’)는 A를 정수로 변환합니다.

타입 캐스트의 문법은 다음과 같습니다.

1.png

표현식이 변수인 경우에는 변수 타입 캐스트라고 부릅니다. 그 외의 경우는 값 타입 캐스트
입니다. 변수 타입 캐스트와 값 타입 캐스트의 문법은 동일하지만, 두 종류의 타입 캐스트에
는 서로 다른 규칙이 적용됩니다.


값 타입 캐스트

값 타입 캐스트(value typecast)에서는, 타입 식별자와 타입 캐스트 표현식은 모두 서수
(ordinal) 타입이거나 포인터 타입이어야 합니다. 값 타입 캐스트의 예는 다음과 같습니다.

2.png

결과 값은 괄호 안의 표현식을 변환함으로써 얻습니다. 지정된 타입의 크기가 표현식의 타입
크기와 다른 경우 잘리거나 늘어날 수도 있습니다. 표현식 부호는 항상 유지됩니다.
문법이 다음과 같을 경우

3.png

이 문법은 Integer(‘A’)의 값, 즉 65를 변수 I에 대입합니다.
값 타입 캐스트 뒤에는 한정자가 올 수 없고, 대입문의 왼쪽에 나타날 수 없습니다.


변수 타입 캐스트

어떤 변수든 어떤 타입으로도 타입 캐스트할 수 있지만, 크기가 동일하고 정수와 실수를 함
께 사용하지 않아야 합니다. (숫자 타입을 타입 캐스트하려면 Int와 Trunc 같은 표준 함수를
사용하십시오.) 변수 타입 캐스트의 예는 다음과 같습니다.

4.png

변수 타입 캐스트는 대입문의 어느 쪽이든 사용할 수 있습니다. 따라서 다음과 같은 경우,

5.png

이 문장은 MyChar에 z 문자(ASCII 122)를 지정합니다.
변수를 프로시저 타입으로 변환할 수도 있습니다. 예를 들어, 다음과 같이 선언한 경우,

6.png

다음과 같은 대입문들이 가능합니다.

7.png

다음의 예와 같이 변수 타입 캐스트를 한정자 와 함께 사용할 수 있습니다.

8.png

이러한 예에서, TByteRec는 워드의 하위 및 상위 바이트를 액세스하는 데 사용되고,
TWordRec은 longint의 하위 및 상위 워드를 액세스하는 데 사용됩니다. 같은 목적으로 델
파이에 내장된 함수 Lo와 Hi를 호출할 수도 있지만, 변수 타입 캐스트는 대입문의 왼쪽에서
사용할 수 있는 잇점이 있습니다.

타입 캐스트 포인터에 대한 내용은 4장의“포인터와 포인터 타입”절을 참조하십시오. 클래
스와 인터페이스 타입 캐스트에 대한 내용은 6장의“클래스 참조”절의“as 연산자”와 11장
의“인터페이스 참조”절의“인터페이스의 타입 캐스트”을 참조하십시오.
번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15427
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16497
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22054
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18922
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39252
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174698
503 [발표자료] RAD Studio XE8 출시 세미나 관리자 2015.05.01 612
502 [업데이트][핫픽스][XE8] iOS 플랫폼의 SQLite 라이브러리 누락 패치 file Humphery 2015.04.30 859
501 [XE8] 번거로운 수작업을 줄여 핵심기능 개발에 집중할 수 있는 개발 생산성 향상도구 Humphery 2015.04.28 897
500 [XE8] TAppAnalytics 컴포넌트로 앱의 사용량 수집, 분석해 사용성을 이해할 수 있습니다. file Humphery 2015.04.27 803
499 델파이에서 MSOffice 엑셀과 워드 연동 참고자료. [1] Humphery 2015.04.27 3762
498 이 달의 기술자료 - 2015년 05월 file 험프리 2015.04.24 5494
497 [델파이7 이후 새로운 기능][XE2~] 프로젝트 매니저에서 타겟플랫폼을 64-bit Windows로 선택 해 64비트 애플리케이션을 개발할 수 있습니다. file Humphery 2015.04.23 4723
496 [델파이7 이후 새로운 기능] 추가되고 개선된 VCL 컴포넌트 Humphery 2015.04.22 3573
495 [델파이7 이후 새로운 기능] 코딩 생산성을 높여주는 코드에디터 기능들 Humphery 2015.04.21 2689
494 XE8로 구현한 멀티플랫폼 클립보드 공유앱 런칭 file c2design 2015.04.19 1185
493 Thalmic Labs의 MYO Armband Delphi SDK Beta7입니다. 쭈니아빠 2015.04.18 1135
492 [XE8] 오프라인에서 도움말을 볼 수 있습니다.(CHM 형식) Humphery 2015.04.17 926
491 [XE8] 대화형 지도 컴포넌트로 구글맵과 애플 맵킷 한번에 사용하기 Humphery 2015.04.17 1650
490 [XE8] 멀티-디바이스 미리보기: 다양한 디바이스 화면을 미리보며 최적화된 화면 개발하기 Humphery 2015.04.17 1132
489 XE8 새로운 기능외의 개선사항 Humphery 2015.04.16 923
488 [XE8] 버전 컨트롤 시스템 IDE 통합(Mercurial 지원) [1] Humphery 2015.04.15 1376
487 [XE8] 근거리 위치기반 서비스를 개발할 수 있는 비콘(Beacon) 연동하기 [1] Humphery 2015.04.15 3940
486 [업데이트][XE7] iOS 8.1.3/8.2 서명과 프로비저닝 프로파일 지원 핫픽스(베타) Humphery 2015.04.14 1055
485 파이어몽키에서 외부 라이브러리 연동하기(jar, so, a) [3] Humphery 2015.04.14 3544
484 [따라하기] reFind 도구를 이용해 BDE 프로젝트를 FireDAC으로 마이그레이션 따라하기 [9] Humphery 2015.04.14 4146