■ 출력 파라미터

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 15441
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39257
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
150 [델파이7 이후 새로운 기능] 코딩 생산성을 높여주는 코드에디터 기능들 Humphery 2015.04.21 2692
149 XE8로 구현한 멀티플랫폼 클립보드 공유앱 런칭 file c2design 2015.04.19 1185
148 Thalmic Labs의 MYO Armband Delphi SDK Beta7입니다. 쭈니아빠 2015.04.18 1135
147 [따라하기] reFind 도구를 이용해 BDE 프로젝트를 FireDAC으로 마이그레이션 따라하기 [9] Humphery 2015.04.14 4146
146 reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구 Humphery 2015.04.09 3976
145 "모바일 앱" 개발 또는 유지관리, 데브기어와 해결하세요! file 관리자 2015.03.26 12732
144 [VCL] TaskDialog 컴포넌트 소개 Humphery 2015.02.25 1092
143 [Delphi week 2015] 윈도우 3.11에서 델파이1.0 사용하기 관리자 2015.02.13 1138
142 [VCL] 에디트/버튼의 다양한 속성 소개 Humphery 2015.02.13 1719
141 [XE7] 안드로이드 WiFi 상태조회와 설정하기 Humphery 2015.02.12 1875
140 [XE7] 안드로이드 블루투스 활성화 조회와 설정하기 [1] Humphery 2015.02.12 1772
139 [무료 온라인 세미나] Delphi Week 2015 file 관리자 2015.02.07 1014
138 20150204 VCL 개발자를 위한 Speed UP! RAD스튜디오 관리자 2015.02.05 1104
137 [VCL] TaskDialog 컴포넌트 소개 Humphery 2015.02.03 926
136 [VCL] 리본컨트롤 자습서 동영상 Humphery 2015.02.03 1766
135 바코드 스캐너 기능 구현하기(iOS, Android) [2] 험프리 2015.01.14 6595
134 [XE7] Castalia로 델파이 코딩 생산성을 높일 수 있습니다.(XE7사용자 무료제공) Humphery 2014.12.09 2600
133 [무료 온라인 강의] 마르코칸투의 "델파이 오브젝트 파스칼" 관리자 2014.11.28 1758
132 더 쉬운코드, 더 유연한 코드를 작성할 수 있는 현대식 문법 [1] Humphery 2014.11.06 4617
131 델파이 문법을 익힐 수 있는 문서모음 [2] Humphery 2014.11.03 2634