프로그램은‘유닛’이라는 소스 코드 모듈들로 구성됩니다. 유닛들은 program, library 혹은
package 헤더로 시작되는 특수한 소스 코드 모듈에 의해 함께 묶이게 됩니다. 각 유닛은 각
각의 파일로 저장되고 별도로 컴파일되며, 컴파일된 유닛이 링크되어 애플리케이션이 만들
어집니다. 델파이는 계층적인 네임스페이스를 도입하여 유닛들을 구성하는 데에 더 큰 유연
성을 제공합니다. 네임스페이스와 유닛을 사용함으로써 다음과 같은 일들이 가능해집니다.

 - 큰 프로그램을 별도로 편집 가능한 모듈들로 나눌 수 있습니다.

 - 프로그램들 사이에 공유할 수 있는 라이브러리를 만들 수 있습니다.

 - 소스 코드 없이 다른 개발자에게 라이브러리를 배포할 수 있습니다.

이 장에서는 program 헤더, 유닛 선언 문법, uses 절 등 델파이 애플리케이션의 전반적인
구조를 다룹니다.


프로그램의 구조와 문법

완전한 델파이 애플리케이션은 여러 유닛 모듈들로 구성되며, 그 유닛들은 프로젝트 파일이
라고 불리는 단일 소스 코드 모듈로 묶여집니다. 전통적인 파스칼 프로그래밍에서는 메인 프
로그램을 포함한 모든 소스 코드는 .pas 파일들에 저장되었습니다. 코드기어 개발툴에서는
메인 프로그램 소스 모듈을 지정하는 .dpr 파일을 사용합니다. 대부분의 다른 소스 코드는 전
통적인 .pas 확장자를 가진 유닛 파일들에 저장됩니다. 컴파일러가 프로젝트를 빌드하려면
프로젝트 소스 파일과 함께 각 유닛들의 소스 파일이나 컴파일된 유닛 파일이 필요합니다.
실행 가능한 델파이 애플리케이션의 소스 코드 파일에는 다음과 같은 내용이 들어 있습니다.

 - program 헤더

 - uses 절 (선택적)

 - 선언과 문장 블럭

추가적으로, RAD 스튜디오 프로그램은 제네릭 유닛들을 검색하기 위한 추가적인 네임스페
이스들을 지정하기 위해 네임스페이스 절을 포함할 수도 있습니다.
컴파일러와 IDE는 이들 세가지 파일들을 단일 프로젝트(.dpr) 파일에서 찾으려고 하게 됩니다.


program 헤더

program 헤더는 실행 가능한 프로그램의 이름을 지정합니다. 예약어 program에 유효한
식별자, 그리고 세미콜론(;) 순으로 구성됩니다. 코드기어 툴로 개발된 애플리케이션의 경
우 이 식별자는 프로젝트 소스 파일 이름과 반드시 일치해야 합니다.
다음의 예제는 Editor라는 이름의 프로그램을 위한 프로젝트 소스를 보여줍니다. 이 프로그

1.png

램의 이름이 Editor이므로, 프로젝트 파일도 Editor.dpr이어야 합니다.

첫 라인은 program 헤더입니다. 이 예제의 uses 절에서는 Forms, ReAbout, ReMain의
세 유닛에 의존함을 알려줍니다. $R 컴파일러 지시자는 이 프로젝트의 리소스 파일을 프로
그램에 링크시킵니다. 마지막으로, begin과 end 예약어 사이의 문장들의 블럭은 프로그램
이 기동될 때 실행됩니다. 다른 모든 델파이 소스 파일들과 마찬가지로 프로젝트 파일도 (세
미콜론이 아닌) 마침표(.)로 끝납니다.

프로그램의 로직 대부분은 유닛 파일에 있기 때문에, 델파이 프로젝트 파일은 대체로 길이
가 짧습니다. 델파이 프로젝트 파일은 일반적으로 애플리케이션의 메인 윈도우를 띄우고 이
벤트 처리 루프를 시작하는 정도의 간단한 코드만 가지고 있습니다. 프로젝트 파일은 IDE
에서 자동으로 생성되고 유지 관리되므로 직접 편집할 필요가 있는 경우는 드뭅니다.
표준 파스칼에서는, 프로그램 헤더의 프로그램 이름 뒤에 다음과 같이 파라미터가 올 수 있
습니다.

2.png

델파이 컴파일러에서는 이 파라미터는 무시됩니다.
program 헤더는 자신만의 네임스페이스를 시작합니다. 이것을 프로젝트 기본 네임스페이
스라고 합니다.


프로그램의 uses 절
uses 절은 프로그램으로 통합될 유닛들을 나열합니다. 이러한 유닛들도 자체 uses 절을 가질
수 있습니다. uses 절에 대한 자세한 내용은 2장의“유닛 참조와 uses 절”을 참조하십시오.


블럭
블럭에는 프로그램을 실행할 때 실행되는 단순 문장 또는 구조 문장이 있습니다. 대부분의
프로그램에서 블럭은 예약어 begin과 end 쌍으로 묶인 복합문으로 구성되는데, 단순히 프
로젝트의 Application 객체의 메소드 호출입니다. 모든 프로젝트는 TApplication,
TWebApplication 혹은 TServiceApplication의 인스턴스를 가지는 Application 변수를
가지고 있습니다. 블럭은 상수, 타입, 변수, 프로시저 및 함수의 선언도 포함할 수 있습니다.
이러한 선언은 반드시 블럭의 문장 부분보다 앞에 있어야 합니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 17811
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 16173
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 18827
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 24396
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 25780
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 21136
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 41723
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 177031
143 [10.4 시드니][업데이트 1] 델파이 코드 인사이트 새로운 기능 관리자 2020.09.10 406
142 리눅스 앱에 '깔끔하면서도 샤프한' 스타일을 적용하고 싶다면 - Air 스타일 관리자 2019.09.09 406
141 현대화 작업, 바로 지금이 골든타임입니다! 관리자 2019.09.11 405
140 [10.3 리오] 리눅스 컴파일러에 non-ARC 메모리 모델이 적용됩니다. 험프리 2018.12.04 405
139 [고객 사례- 델파이, 예술, 창작] 아트젠, 컴퓨터로 완성하는 미술 작품 관리자 2020.08.25 404
138 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 3장(실습).사원 정보 프로토타입 앱 관리자 2020.02.04 401
137 이 달의 기술자료 - 2016년 10월 file 험프리 2016.09.30 401
136 리눅스 앱에 파이어몽키에서 적용했던 스타일을 똑같이 적용하세요 - Wedgewood Light 스타일 관리자 2019.09.09 400
135 [도서/PDF] 한 번에 개발하는 안드로이드&iOS 앱 with 델파이 1편 - 8장. 애니메이션과 효과 적용하기 관리자 2020.02.04 399
134 플루언트 디자인 시스템으로 애플리케이션 현대화하기 관리자 2021.04.08 398
133 RAD스튜디오 로드맵 (2020.11) 관리자 2020.11.18 397
132 [발표자료] What's NEW! RAD Studio 10.2 도쿄 험프리 2017.04.13 397
131 [UX Summit 요약] 윈도우10에 멋진 플루언트UI 룩앤필을 델파이로 구현하기 (Giving your Apps the Fluent UI Look and Feel with Delphi)을 요약했습니다. - (델파이 개발자 뿐만 아니라) 윈도우 애플리케이션 개발자가 알아야할 기본이되고 중요한 마이크로소프트 UI 디자인의 핵심을 정리하고 보여줍니다. 관리자 2020.10.26 396
130 DelphiParser: Conversion Component Suite - 델파이 코드를 최신으로 현대화하는 마이그레이션 도구 관리자 2020.08.28 395
129 [무료 온라인 세미나] 사물인터넷 실제 구현하기 DeepDive! 관리자 2015.09.15 393
128 [고객사례-유틸리티, 델파이] ExBox 관리자 2020.02.19 393
127 윈도우10에서의 최신 C++17 관리자 2020.01.07 393
126 [3분 완성] C++로 안드로이드&iOS 용 사진공유앱 완성하기 관리자 2019.08.14 393
125 유투브(YouTube)와 워드프레스(WordPress)를 엔터프라이즈 커넥터로 연동해 활용하기 관리자 2019.08.21 392
124 윈도우 버전 점유율 변화: 2009년부터 2019년 현재까지! file 관리자 2019.11.18 390