■ 출력 파라미터

out 파라미터는 변수 파라미터처럼 참조에 의해 전달됩니다. 그러나 out 파라미터에서는 참
조되는 변수의 초기 값은 루틴으로 전달할 때 버려집니다. out 파라미터는 출력용으로만 사
용합니다. 즉, 함수나 프로시저에게 출력을 어디에 저장할 지는 알려주지만, 입력에 대한 정
보는 알려주지 않습니다.
예를 들어, 다음과 같은 프로시저 헤더를 살펴봅시다.

1.png

GetInfo를 호출하려면 반드시 SomeRecordType 타입 변수를 전달해야 합니다.

2.png

그러나 GetInfo 프로시저로 데이터를 전달하는 데 MyRecord를 사용하지 않습니다.
MyRecord는 GetInfo가 만들어낼 정보를 저장할 컨테이너일 뿐입니다. GetInfo를 호출하
면 프로그램의 제어가 프로시저로 넘어가기 전에 MyRecord가 사용하는 메모리를 해제합
니다.
Out 파라미터는 COM 같은 분산 객체 모델에서 함께 자주 사용됩니다. 초기화되지 않은 변
수를 함수나 프로시저로 전달할 때에도 out 파라미터를 사용해야 합니다.


■ 타입 미지정 파라미터

var, const, out 파라미터를 선언할 때 타입 지정을 생략할 수 있습니다. (반면 값 파라미터
는 반드시 타입이 지정되어야 합니다.) 예를 들면,

3.png

위 코드는 모든 타입의 파라미터를 다 전달받을 수 있는 TakeAnything이라는 프로시저를
선언합니다. 이런 루틴을 호출할 때 숫자나 타입이 지정되지 않은 숫자 상수를 넘길 수 없습
니다.

프로시저나 함수의 바디 내에서 타입 미지정 파라미터(untyped parameter)는 어떤 타입
과도 호환되지 않습니다. 타입 미지정 파라미터를 연산하려면 타입 캐스트를 해야 합니다.
일반적으로, 컴파일러는 타입 미지정 파라미터의 연산이 유효한지 확인할 수 없습니다.
다음 예에서는 Equal이라는 함수에서 타입 미지정 파라미터를 사용합니다. 이 Equal 함수
는 두 변수의 특정 바이트 수를 비교합니다.

4.png

다음과 같이 선언되었을 경우,

5.png

다음과 같이 Equal을 호출할 수 있습니다.

6.png



문자열 파라미터

짧은 문자열 파라미터를 갖는 루틴을 선언할 경우, 파라미터 선언에서 길이 지정을 할 수 없
습니다. 즉, 다음 선언은,

7.png

컴파일 에러를 일으킵니다. 그러나,

8.png

이 선언은 유효합니다. 특수 식별자 OpenString은 다양한 길이의 짧은 문자열 파라미터를
갖는 루틴을 선언하는 데 사용됩니다.

9.png

{$H-} 및 {$P+} 컴파일러 지시어를 모두 사용하면 예약어 string은 파라미터 선언에서
OpenString과 같습니다.

짧은 문자열, OpenString, $H 및 $P는 하위 호환성을 위해서만 지원됩니다. 새로운 코드
에서는 긴 문자열을 사용하여 이러한 문제를 피할 수 있습니다.
번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15433
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13961
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22054
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39253
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174698
130 XE7에서 추가 된 안드로이드 프로젝트에서 외부 라이브러리(jar) 사용을 위한 정보 [1] Humphery 2014.11.03 3224
129 8단계로 완성하는 "2014년 출시 앨범" 앱 개발 따라하기 [1] file Humphery 2014.10.07 3656
128 [온라인 세미나 발표자료] RAD Studio XE7! 관리자 2014.09.17 1641
127 [기술문서] 델파이와 유니코드 관리자 2014.09.16 1936
126 [기술문서] 델파이XE2와 파이어몽키 관리자 2014.09.16 1657
125 [기술문서] Delphi 코딩 스타일과 아키텍처(Delphi 2009의 언어 기능 리뷰) 관리자 2014.09.16 1536
124 [Step UP! 마이그레이션] RAD 업그레이드 마이그레이션 기술 브리핑 자료(2014.8.21) 관리자 2014.08.22 1995
123 델파이를 이용해 구글크롬캐스트와 연결 Humphery 2014.07.22 2620
122 델파이 물리엔진 Box2d 소개. FMX, VCL 용(오픈소스) [1] Humphery 2014.04.22 4181
121 [XE5만의 특별한 기능] 응답하라! Delphi VCL 개발자 관리자 2013.12.21 4890
120 Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기 [4] file Humphery 2013.12.19 7764
119 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 107287
118 11월 26일 "RAD Studio XE5 따라잡기: 모바일 개발 퀵스타트 LIVE!" 발표자료입니다. file 관리자 2013.12.03 3596
117 엔터프라이즈 데이터 기반의 모바일 앱 과정(2일) 우선 등록 안내 관리자 2013.11.21 2720
116 델파이 안드로이드앱에서 jar 클래스 사용하기 file 관리자 2013.10.31 5328
115 Release Notes for XE5 Update 1 c2design 2013.10.29 3380
114 델파이1 부터 델파이XE5까지의 역사 관리자 2013.10.26 4684
113 iOS 7 앱 개발을 위한 XE5 업데이트 제공 안내 관리자 2013.10.15 3875
112 CodeRage 8: Delphi 온라인 무료 세미나 개최 관리자 2013.10.15 3362
111 iOS UI 디자인 (델파이XE4 활용) 관리자 2013.07.19 3783