■ 출력 파라미터

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 13961
공지 [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 39255
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174706
1183 RAD스튜디오 개발환경(IDE) 사용법: 파이어몽키 코스북 3장 file 관리자 2014.07.09 5832
1182 C++의 창시자 "비얀 스트로스트럽"이 직접 진행하는 CodeRage7 세션! 관리자 2012.11.30 5830
1181 Hotfix 2 for C++Builder XE2, Delphi XE2 and RAD Studio XE2 is now available 박병일 2011.12.22 5823
1180 [따라하기] 도서대여 프로그램 만들기 - 1, 분석, 설계 [4] file 험프리 2017.01.26 5811
1179 DLL 폼에서 VCL 폼 스타일 적용하기 file 김원경 2019.10.28 5809
1178 [동영상 강의] 델파이 기본 교육_18.부서관리 관리자 2012.08.03 5809
1177 David I의 31일 동영상(한글자막) - C++빌더로 만든 윈도우와 맥 앱에서 플랫폼 서비스와 OS정보 사용하기 관리자 2013.04.17 5807
1176 [C++mas] C++빌더 코드 64-bit로 마이그레이션하기 관리자 2012.12.21 5803
1175 [따라하기] 건강데이터 수집 및 기록 시스템 #1 - BLE 기반 스마트 체중계에서 실시간 데이터 받기 [1] Humphery 2015.10.02 5794
1174 [델파이 문법] 문법 요소 #7 file 관리자 2012.10.29 5790
1173 David I의 31일 동영상(한글자막) - 3D앱 만들기(윈도우&맥)(델파이 동일 적용 가능) 관리자 2013.04.23 5776
1172 DBGrid 에서 GraphicsField 보여주기 박병일 2011.12.22 5774
1171 20120906 RAD Studio XE3 월드투어-서울 세미나 발표자료입니다. [1] file 관리자 2012.09.07 5773
1170 David I의 31일 동영상(한글자막) - 나만의 첫 C++파이어몽키 애플리케이션 관리자 2013.03.12 5765
1169 [C++mas] C++빌더XE3로 나만의 첫 번째 C++11 애플리케이션 만들기 관리자 2012.12.21 5759
1168 델파이/C++빌더 XE3 수정된 버그 리스트가 올라왔습니다. 관리자 2012.10.23 5758
1167 RAD Studio XE3, 델파이XE3, C++빌더XE3 용 핫픽스(Hotfix)4가 나왔습니다. 관리자 2012.10.30 5709
1166 이 달의 기술자료 - 2015년 04월 험프리 2015.03.26 5677
1165 David I의 31일 동영상(한글자막) - 카메라, 텍스쳐를 사용하는 3D앱(윈도우&맥용)(델파이 동일 적용 가능) 관리자 2013.04.24 5651
1164 David I의 31일 동영상(한글자막) - 모션과 위치정보 센서 컴포넌트를 C++빌더XE3 윈도우&맥 용 앱에서 사용하기(델파이 동일 적용 가능) 관리자 2013.04.19 5648