Delphi [델파이 문법] 문법 요소 #10

2012.11.08 19:55

관리자 조회 수:7543

구조문

구조문(structured statement)은 다른 문장들로 이루어집니다. 다른 문장들을 차례대로 또
는 어떤 조건 하에, 또는 반복적으로 실행하고자 하는 경우 구조문을 사용합니다.

  - 복합문 또는 with 문은 단순히 구성 문장들의 순서대로 실행합니다.

  - 조건문 즉, if 또는 case 문은 지정된 조건에 따라 구성 문장들 중 하나가 실행되거나 전혀 실
     행되지 않습니다.

  - repeat, while 및 for 등의 순환문(loop statement)은 구성 문장들의 순서대로 반복해서 실행
     합니다.

   - raise, try...except 및 try...finally 등의 특수한 문장들은 예외(exception)를 생성하고
     처리합니다. 예외 생성과 처리에 대한 내용은 6장의“예외”절을 참조하십시오.


■ 복합문

복합문(compound statement)은 다른 타입의 문장들(단순문 또는 구조문)의 연속으로서,
작성된 순서대로 실행됩니다. 복합문은 예약어 begin 및 end로 묶이고, 복합문 내의 문장들
은 세미콜론으로 구분합니다. 예를 들면, 다음과 같습니다.

1.png

end 앞의 마지막 세미콜론은 옵션입니다. 그러므로 다음과 같이 쓸 수 있습니다.

2.png

복합문은 델파이 문법에서 하나의 문장이 필요한 상황에서 필수적입니다. 프로그램, 함수나
프로시저 블럭 외에도, 조건문이나 순환문과 같은 구조문 내에 나타날 수 있습니다. 예를 들
면, 다음과 같습니다.

3.png

내부의 문장이 단 하나인 복합문을 작성할 수도 있습니다. 복잡한 문장에서의 괄호와 마찬가
지로 begin과 end로 명확하게 표시함으로써 코드의 가독성을 높일 수 있습니다. 또한 빈 복
합문을 사용하여 내용이 없는 블럭을 만들 수도 있습니다.

4.png


■with 문

with 문은 레코드의 필드나 객체의 필드, 속성, 메소드를 참조하기 위한 간단 표기 방식입니
다. with 문의 문법은 다음과 같습니다.

5.png

또는,

6.png

여기서, obj는 레코드 참조나 객체 인스턴스, 클래스 인스턴스, 인터페이스나 클래스 타입
(메타클래스) 인스턴스를 나타내는 변수 참조이고, statement는 단순문이나 구조문입니
다. statement 내에서 한정자 없이 식별자만으로 obj의 필드, 속성, 메소드를 참조할 수
있습니다.

예를 들어, 다음과 같이 선언했다고 가정해 보십시오.

7.png

다음과 같은 with 문을 작성할 수 있습니다.

8.png

이 문장은 다음과 동일합니다.

9.png

obj의 해석에 배열 인덱싱이나 포인터 역참조가 포함되면, 이러한 동작은 statement가 실행
되기 전에 한 번 수행됩니다.

따라서 with 문은 간결할 뿐만 아니라 더 효율적이 됩니다. 또한 with 문을 실행하는 동안은
statement 내에서 변수에 대한 대입 동작은 obj의 해석에 영향을 미지 않는다는 것을 의미
합니다.

with 문 안의 각각의 변수 참조나 메소드 이름은 가능한 경우 지정된 객체나 레코드의 멤버
로서 해석됩니다. with 문 안에서 액세스하려는 것과 같은 이름을 가진 변수나 메소드가 있
을 경우, 다음 예제에서와 같이 한정자를 앞에 덧붙여야 합니다.

10.png

with 뒤에 객체나 레코드가 여러 개 있으면, 중첩된 with 문처럼 처리됩니다. 따라서,

11.png

이 문장은 다음과 같습니다.

12.png

이 경우에, statement에 있는 각 변수 참조 이름이나 메소드 이름은 가능하면 objn의 멤버로
해석됩니다. 그렇지 않은 경우 가능하면 objn-1의 멤버로 해석되며, 그렇지 않은 경우 다시
더 상위의 with 문으로 반복해서 해석을 시도해나갑니다. obj 자신들을 해석하는 데에도 같
은 규칙이 적용됩니다. 예를 들어 objn가 obj1과 obj2 모두의 멤버인 경우, obj2.objn으로 해석
됩니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 21850
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 20498
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 22535
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 28286
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 29585
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 24909
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 45847
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 181394
1303 [UX Summit 요약] 레거시 데스크탑 앱 UI/UX 현대화 – 이론부터 실제까지 (Legacy desktop apps UI & UX modernization. From theory to practice) 관리자 2020.11.04 433
1302 델파이에서 파이썬 표현식 활용하기 (PYTHON4DELPHI 샘플 앱) 관리자 2020.11.03 923
1301 개발자가 지원해야 하는 핵심 플랫폼들 관리자 2020.11.02 314
1300 이 달의 기술자료 - 2020년 11월 file 험프리 2020.10.27 368
1299 DELPHICON 2020, 곧 시작됩니다! file 관리자 2020.10.27 307
1298 [UX Summit 요약] 윈도우10에 멋진 플루언트UI 룩앤필을 델파이로 구현하기 (Giving your Apps the Fluent UI Look and Feel with Delphi)을 요약했습니다. - (델파이 개발자 뿐만 아니라) 윈도우 애플리케이션 개발자가 알아야할 기본이되고 중요한 마이크로소프트 UI 디자인의 핵심을 정리하고 보여줍니다. 관리자 2020.10.26 414
1297 RAD스튜디오와 델파이 – 원조 로우코드! 관리자 2020.10.23 320
1296 [UX Summit 요약 / 사례연구] 모바일은 두 번째: 어떨 때 데스크톱에 우선 집중하는가? 관리자 2020.10.22 299
1295 XML MAPPER 업데이트 관리자 2020.10.21 312
1294 [UX Summit 요약] 데스크탑용 UX 구축/최적화 전략(Strategies for building and optimizing the desktop UX) 관리자 2020.10.21 273
1293 [UX Summit 요약] 훌륭한 UI에 적용되는 과학적 원리 (Science of Great UI) 관리자 2020.10.19 261
1292 [개발팁] 오래된 레거시 델파이, C++ 애플리케이션을 최신 스타일의 초고속 앱으로 마이그레이션하기 관리자 2020.10.15 360
1291 C++ 업데이트 소식: 10.4와 10.4.1에서 집중한 C++ 품질과 관련하여 관리자 2020.10.12 340
1290 [10.4 시드니][업데이트 1] 새로운 IDE 기능들 관리자 2020.10.08 355
1289 [엠바카데로 UX SUMMIT] 눈여겨 봐야할 컨텐츠들! 관리자 2020.10.06 309
1288 델파이용 볼드(BOLD FOR DELPHI) 오픈 소스 공개! 관리자 2020.09.25 509
1287 [업데이트 서브스크립션 고객 - 무상제공] C++ 컴파일 스피드를 확 높여줄 TwineCompile 관리자 2020.09.25 596
1286 이 달의 기술자료 - 2020년 10월 file 험프리 2020.09.24 390
1285 델파이 개발자를 위한 파이썬 file 관리자 2020.09.23 590
1284 [팁] VLC 플레이어(ActiveX Import 해) 사용하기 file 험프리 2020.09.22 1132