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

2012.10.16 01:21

관리자 조회 수:7126

레이블

레이블은 표준 델파이 언어 식별자이지만 예외적으로 레입은 숫자로 시작할 수 있습니다. 숫
자 레이블은 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 14387
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13023
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 15532
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 21064
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 22297
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 17933
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 38228
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 173741
130 XE7에서 추가 된 안드로이드 프로젝트에서 외부 라이브러리(jar) 사용을 위한 정보 [1] Humphery 2014.11.03 3220
129 8단계로 완성하는 "2014년 출시 앨범" 앱 개발 따라하기 [1] file Humphery 2014.10.07 3648
128 [온라인 세미나 발표자료] RAD Studio XE7! 관리자 2014.09.17 1639
127 [기술문서] 델파이와 유니코드 관리자 2014.09.16 1932
126 [기술문서] 델파이XE2와 파이어몽키 관리자 2014.09.16 1654
125 [기술문서] Delphi 코딩 스타일과 아키텍처(Delphi 2009의 언어 기능 리뷰) 관리자 2014.09.16 1532
124 [Step UP! 마이그레이션] RAD 업그레이드 마이그레이션 기술 브리핑 자료(2014.8.21) 관리자 2014.08.22 1991
123 델파이를 이용해 구글크롬캐스트와 연결 Humphery 2014.07.22 2618
122 델파이 물리엔진 Box2d 소개. FMX, VCL 용(오픈소스) [1] Humphery 2014.04.22 4177
121 [XE5만의 특별한 기능] 응답하라! Delphi VCL 개발자 관리자 2013.12.21 4888
120 Runtime Packages 옵션으로 프로그램(배포) 용량 줄이기 [4] file Humphery 2013.12.19 7754
119 ComPort(시리얼 통신) 컴포넌트 설치안내 [11] file 험프리 2013.12.04 106647
118 11월 26일 "RAD Studio XE5 따라잡기: 모바일 개발 퀵스타트 LIVE!" 발표자료입니다. file 관리자 2013.12.03 3593
117 엔터프라이즈 데이터 기반의 모바일 앱 과정(2일) 우선 등록 안내 관리자 2013.11.21 2716
116 델파이 안드로이드앱에서 jar 클래스 사용하기 file 관리자 2013.10.31 5324
115 Release Notes for XE5 Update 1 c2design 2013.10.29 3379
114 델파이1 부터 델파이XE5까지의 역사 관리자 2013.10.26 4681
113 iOS 7 앱 개발을 위한 XE5 업데이트 제공 안내 관리자 2013.10.15 3872
112 CodeRage 8: Delphi 온라인 무료 세미나 개최 관리자 2013.10.15 3360
111 iOS UI 디자인 (델파이XE4 활용) 관리자 2013.07.19 3779