■ 출력 파라미터

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 15405
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13957
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16493
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22044
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23266
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18920
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39241
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174691
1163 David I의 31일 동영상(한글자막) - 새로운 장비와 센서를 적용한 파이어몽키 애플리케이션 관리자 2013.03.12 5647
1162 David I의 31일 동영상(한글자막) - dbExpress와 ClientDataSet으로 SQL데이터베이스를 활용한 파이어몽키 앱 만들기 관리자 2013.03.26 5640
1161 [델파이 문법] 문법 요소 #5 file 관리자 2012.10.22 5636
1160 [델파이 문법] 프로시저와 함수 #12 file 관리자 2012.08.30 5627
1159 David I의 31일 동영상(한글자막) - 오디오 재생 및 캡쳐앱 만들기(윈도우&맥용) 관리자 2013.04.04 5624
1158 David I의 31일 동영상(한글자막) - 두 개의 비디오 카메라로 화면 캡쳐하는 앱 만들기(윈도우&맥용) 관리자 2013.04.04 5620
1157 델파이XE4로 아이폰, 아이패드, 윈32, 윈64, 맥OS X 단일 소스코드 베이스로 2분만에 개발 관리자 2013.05.13 5602
1156 Form에 있는 콤포넌트를ListView 로 나타내기 박병일 2011.12.22 5588
1155 David I의 31일 동영상(한글자막) - 메트로폴리스 UI를 적용한 파이어몽키 애플리케이션 관리자 2013.03.12 5561
1154 안드로이드 개발환경 추가 조치방법 - RAD Studio에서 SDK 설정 Humphery 2015.10.01 5557
1153 20121204 C++빌더XE3 세미나 자료 file 관리자 2012.12.05 5552
1152 RAD Studio, Delphi 그리고 C++빌더 로드맵 - 한글(2014년 3월) file Humphery 2014.03.05 5548
» [델파이 문법] 프로시저와 함수 #8 file 관리자 2012.08.16 5540
1150 [델파이 문법] 프로시저와 함수 #5 file 관리자 2012.08.06 5535
1149 David I의 31일 동영상(한글자막) - HD비디오 재생 및 캡쳐하는 애플리케이션 만들기(윈도우&맥): 수정완료 관리자 2013.03.26 5529
1148 [C++빌더 XE3 비디오 31] C++빌더XE3로 Win32, Win64, OSX용 애플리케이션 만들기 관리자 2013.01.03 5519
1147 [델파이 문법] 프로시저와 함수 #6 file 관리자 2012.08.09 5516
1146 [따라하기] 인공지능 오목게임(1) - 만들기 [2] file 대화마을 2017.09.12 5503
1145 [C++빌더 XE3 비디오 31] C++ 파이어몽키 앱에 Action 및 Gesture 추가하기 관리자 2013.01.08 5501
1144 델파이 아래 버전에서 XE2로 마이그레이션시 별도의 리소스 파일이 필요 없는 경우 관리자 2012.07.05 5495