■ 출력 파라미터

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 15504
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13974
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16509
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22069
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23289
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18934
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39279
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174737
1163 델파이, C++빌더의 윈도우10과 High DPI 디스플레이 지원 김원경 2020.02.28 669
1162 [업데이트][패치][10.3.3] Midas와 델파이 Open Array 패치 험프리 2020.02.28 260
1161 인터베이스(InterBase)와 다른 데이터베이스들의 기능 비교 file 김원경 2020.02.27 594
1160 내장된 암호화 해시 라이브러리를 사용할 수 있습니다. - System.Hash file 험프리 2020.02.27 506
1159 RAD서버 도커(Docker) 기술 가이드 관리자 2020.02.26 423
1158 새로운 FMX 멀티-디바이스 테마 - Material Patterns Blue 관리자 2020.02.25 409
1157 새로운 VCL 윈도우 테마 - Material Patterns Blue 관리자 2020.02.25 417
1156 안드로이드 앱의 난독화 - 파이어몽키로 작성한 네이티브 앱은 디컴파일할 수 없어 보안에 강력합니다. 험프리 2020.02.24 434
1155 [고객사례-유틸리티, 델파이] IcoFX 관리자 2020.02.20 296
1154 [고객사례-유틸리티, 델파이] ExBox 관리자 2020.02.19 383
1153 새로운 FMX 테마 - 우분투(Ubuntu) Clear Fantasy 스타일 관리자 2020.02.19 430
1152 마이크로소프트 비주얼 C++ 개발자를 위한 C++빌더 활용 방법 관리자 2020.02.19 458
1151 새로운 VCL 윈도우 테마 - Lucky Point 관리자 2020.02.18 406
1150 [고객사례-유틸리티, 델파이] TreeSize - 하드 디스크 공간 관리 프로그램 관리자 2020.02.18 554
1149 [고객사례-모바일 앱, 델파이] CAW+ 키보드 - 중/일, 한자 입력 및 번역 앱 file 관리자 2020.02.17 420
1148 새로운 VCL 윈도우 테마 - Zircon 관리자 2020.02.14 427
1147 함께 축하해요! 델파이 25주년!! #Delphi25th file 관리자 2020.02.14 313
1146 개발을 할 때 조심해야 하는 포인트 '도구의 법칙과 개발자의 저주' 관리자 2020.02.13 416
1145 RAD 서버 완벽 가이드 - 200페이지 분량의 전자책 file 험프리 2020.02.07 751
1144 도커(Docker) 제대로 활용하기 험프리 2020.02.07 571