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

2012.10.16 01:21

관리자 조회 수:7127

레이블

레이블은 표준 델파이 언어 식별자이지만 예외적으로 레입은 숫자로 시작할 수 있습니다. 숫
자 레이블은 10자까지만 가질 수 있으므로 0에서 9999999999까지의 숫자가 됩니다.
레이블은 goto 문에서 사용됩니다. goto 문과 레이블에 대한 자세한 내용은 3장의“goto 문”
을 참조하십시오.


문자열

문자열은 문자열 리터럴 또는 문자열 상수라고도 불리며, 인용 문자열, 제어 문자열, 또는 인
용 문자열과 제어 문자열의 조합으로 구성됩니다. 구분자는 인용 문자열 내에서만 사용할 수
있습니다.

인용 문자열은 확장된 ASCII 문자셋에서 최대 255개의 문자들의 연속으로, 한 줄로 쓰며
작은 따옴표(')로 묶입니다. 작은 따옴표들('') 사이에 아무것도 없는 인용 문자열은 Null
문자열입니다. 인용 문자열 내에서 연속적인 두 개의 작은 따옴표('')는 하나의 작은 따옴표
(')를 의미합니다. 예를 들면 다음과 같습니다.

1.png

제어 문자열은 하나 이상의 연속된 제어 문자들입니다. 각각의 제어 문자는 #기호에 이어 0
에서 255까지의 부호 없는 정수 상수(10진수 혹은 16진수)로 구성되고, 해당 ASCII 문자를
나타냅니다. 제어 문자열의 예제는 다음과 같습니다.

2.png

이 문장은 다음 인용 문자열과 동일합니다.

3.png

제어 문자열과 인용 문자열을 조합하면 더 큰 문자열을 만들 수 있습니다. 예를 들어 다음 문
자열은,

4.png

‘Line 1’과‘Line 2’사이에 캐리지 리턴과 라인 피드가 삽입됩니다. 그러나 한 쌍의 연속적
인 작은 따옴표(‘)는 단일 문자로 해석되기 때문에 이러한 방법으로 두 개의 인용 문자열을
연결할 수는 없습니다. 인용 문자열을 연결하려면 3장의“문자열 연산자”에서 설명된 + 연
산자를 사용하거나, 하나의 인용 문자열로 만드십시오.

문자열의 길이는 문자열에 있는 문자의 갯수입니다. 길이에 상관 없이 문자열은 모든 문자열
타입과 PChar 타입과 호환됩니다. 길이가 1인 문자열은 모든 문자 타입과 호환되고, 확장
문법이 활성화(컴파일러 지시자 {$X+})되면 0보다 큰 n 길이의 문자열은 첨자가 0부터 시
작하는 n 문자의 배열 및 압축 배열과 호환됩니다. 문자열 타입에 대한 자세한 내용은 4장
“데이터 타입, 변수 및 상수”를 참조하십시오.



주석문과 컴파일러 지시어

주석문(comment)은 컴파일러에서 무시됩니다. 인접한 토큰들 사이의 구분자로서 혹은 컴
파일러 지시어로서의 기능을 하는 경우는 예외입니다.
주석문을 만드는 방법은 다음과 같이 몇가지가 있습니다.

5.png

동일한 주석문 기호를 중복해서 주석문을 만들 수는 없습니다. { { } }는 안되지만 (* { } *)
는 됩니다. 이것은 주석문을 포함한 코드 영역을 주석 처리하는 데에 유용합니다.
열린 { 또는 (* 바로 뒤에 달러 기호($)가 있는 주석문은 컴파일러 지시어(compiler
directive)입니다. 예를 들면 다음과 같습니다.

6.png

이 문법은 컴파일러가 경고 메시지를 내지 않도록 지정합니다


표현식

표현식(expression)은 값을 리턴 하는 코드 구조입니다. 
오른쪽의 표는 델파이 표현식의 예들을 보여줍니다.
가장 간단한 표현식은 변수와 상수 자체입니다. 연산자, 함수 호
출, 집합 생성자, 인덱스 및 타입 캐스트를 사용하면 간단한 표현식
으로부터 복잡한 표현식을 만들 수 있습니다.

7.png

연산자

연산자(operator)는 델파이 언어에 기본적으로 내장된 함수처럼 동작합니다. 예를 들어, 표현
식 (X + Y)는 변수 X와 Y(피연산자라고 부름)와 + 연산자를 사용하여 만들어집니다. 즉, X
와 Y가 정수나 실수를 나타내는 경우 (X + Y)는 이 둘의 합을 돌려줍니다. 연산자에는 @,
not, ^, *, /, div, mod, and, shl, shr, s, +, -, or, xor, =, >, <, <>, <=, =, in, is가 있습니다.
연산자 @, not 및 ^는 피연산자가 하나인 단항 연산자(unary operator)입니다.다른 모든
연산자들은 피연산자가 두 개인 이항 연산자(binary operator)인데, +와 ?는 단항 연산자
와 이항 연산자 모두로 사용할 수 있습니다. 피연산자 뒤에 오는 ^(예를 들어 P^)를 제외한
모든 단항 연산자는 -B 같이 피연산자의 앞에 옵니다. 이항 연산자는 피연산자들 사이에 위
치합니다(예를 들어 A = 7).

일부 연산자는 전달된 데이터의 타입에 따라 다르게 동작합니다. 예를 들어, not은 정수 피
연산자에 대해서는 비트(bitwise) 부정 연산을 수행하고, 부울 피연산자에 대해서는 논리 부
정 연산을 수행합니다. 이런 연산자들은 아래와 같이 다양한 범주에서 나타납니다.
^, is 및 in을 제외한 모든 연산자는 Variant 타입의 피연산자를 사용할 수 있습니다. 자세한

내용은 4장의“ Variant 타입”을 참조하십시오.

다음에 이어지는 절들을 살펴보려면 델파이 데이터 타입에 대해 약간 익숙할 필요가 있습니
다. 데이터 타입에 대한 내용은 4장“데이터 타입, 변수 및 상수”를 참조하십시오.
복잡한 표현식의 연산자 우선 순위에 대한 내용은 4- 2 절의“연산자 우선 순위”를 참조하십
시오.


산술 연산자

산술 연산자는 실수 또는 정수를 다루며, 여기에는 +, -, *, /, div, mod가 있습니다.

8.png


다음 규칙은 산술 연산자에 대해 적용됩니다.


 - x/y의 값은 x와 y의 타입에 관계 없이 Extended 타입입니다. 다른 산술 연산자에서는 피연산

자 중 하나가 실수이면 결과는 Extended 타입입니다. 피연산자 중 하나가 Int64 타입이면, 결

과는 Int64 타입입니다. 그외에는 정수 타입입니다. 피연산자의 타입이 정수 타입의 부분 범위

인 경우 정수 타입처럼 처리됩니다.


 - x div y 값은 x/y를 가장 가까운 정수로 내림한 값, 즉 몫입니다.


 - mod 연산자는 피연산자 나눗셈의 나머지를 리턴합니다. 다시 말하면 다음과 같습니다.

x mod y = x - (x div y) * y

 - x/y, x div y 또는 x mod y 같은 표현식에서 y가 0이면 런타임 에러가 발생합니다.



부울 연산자


부울 연산자(boolean operator)인 not, and, or, xor는 부울 타입의 피연산자를 받고 부울

타입의 값을 돌려줍니다.

9.png


이러한 연산들은 부울 로직의 표준 규칙에 따릅니다. 예를 들어, x와 y 모두가 True인 경우

에만 x and y 표현식이 True입니다.

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 14404
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13046
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15551
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21081
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22312
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17961
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38247
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173763
583 (작성 중) 파이어몽키 모바일 개발에 대한 FAQ [1] 험프리 2015.12.01 494
582 이 달의 기술자료 - 2015년 12월 file 험프리 2015.11.27 523
581 [업데이트][10 시애틀] RAD Studio 10 시애틀 서브스크립션 업데이트 1 [3] file 험프리 2015.11.25 1568
580 [발표자료] 20151124 온라인세미나: 델파이 코드 마이그레이션 Step by Step 관리자 2015.11.25 576
579 BPL(패키지)를 이용해 프로그램 모듈화 하기 험프리 2015.11.24 1122
578 [발표자료] 20151119 델파이 소스코드의 재발견 관리자 2015.11.20 615
577 [마이그레이션][팁] 유니코드 검토 대상 분석 도구 다운로드 [1] file 험프리 2015.11.16 1838
576 [마이그레이션][팁] 설치된 컴포넌트 확인 팁 file 험프리 2015.11.12 776
575 [마이그레이션][팁] 배치파일(커맨드 명령어)을 이용해 손쉽게 소스파일 갯수를 파악할 수 있습니다. file 험프리 2015.11.12 2630
574 [안드로이드] 배포파일, 아이콘, 스플래쉬 등이 잘 배포되었는지 확인하기 file 험프리 2015.11.11 1520
573 이 달의 기술자료 - 2015년 11월 file 험프리 2015.10.30 740
572 [발표자료] 20151019 David I 초청 워크샵: 윈도우 애플리케이션 개발자를 위한 DeepDive! 관리자 2015.10.20 588
571 [시애틀] 블루투스 LE를 지원하는 디바이스에서 비콘 광고데이터를 발생할 수 있습니다. file Humphery 2015.10.06 687
570 [시애틀] 모든 종류의 안드로이드 인텐트(Intent)를 처리할 수 있습니다. Humphery 2015.10.06 847
569 [시애틀] BSON(Binary JSON)을 처리하고, JSON 데이터를 스트리밍 모델로 읽고, 쓸수 있습니다. file Humphery 2015.10.05 1714
568 [시애틀] IDE 메모리 개선으로 더 큰 프로젝트를 더 빠르게 코딩하고, 더 빠르게 컴파일 할 수 있습니다. 험프리 2015.10.05 440
567 [시애틀] 작업 중 비정상 종료 시 저장하지 않은 작업을 복구할 수 있습니다. file Humphery 2015.10.05 1012
566 [시애틀][VCL] 고해상도 모니터(4K 모니터와)와 멀티 모니터(모니터 당 DPI)를 지원합니다. [1] Humphery 2015.10.05 1298
565 [따라하기] 건강데이터 수집 및 기록 시스템 #1 - BLE 기반 스마트 체중계에서 실시간 데이터 받기 [1] Humphery 2015.10.02 5769
564 [다시보기] RAD Studio 10 시애틀 딥다이브 세션 다시보기(영문) Humphery 2015.10.02 549