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

2012.10.16 01:21

관리자 조회 수:7157

레이블

레이블은 표준 델파이 언어 식별자이지만 예외적으로 레입은 숫자로 시작할 수 있습니다. 숫
자 레이블은 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 15442
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39257
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174713
130 Release Notes for XE5 Update 1 c2design 2013.10.29 3380
129 [마이그레이션] 64비트 적용 시 검토할 사항들 file 험프리 2017.02.08 3375
128 CodeRage 8: Delphi 온라인 무료 세미나 개최 관리자 2013.10.15 3362
127 [추가된 문법 정리] - 배열 상수 초기화:델파이 XE7 추가 관리자 2016.06.03 3325
126 XE7에서 추가 된 안드로이드 프로젝트에서 외부 라이브러리(jar) 사용을 위한 정보 [1] Humphery 2014.11.03 3224
125 QR/바코드 스캐너 앱 샘플코드(ZXing, TFrameStand 사용) [1] 험프리 2017.08.04 3048
124 Developer Direct LIVE! 모바일 썸머 스쿨!! 관리자 2013.07.06 2954
123 브레이크 포인트를 설정해도 디버깅이 안되는 경우 살펴볼 항목 file 험프리 2016.05.13 2808
122 [따라하기] 도서대여 프로그램 만들기 - 5, 도서대여 기능 개발 file 험프리 2017.02.02 2803
121 엔터프라이즈 데이터 기반의 모바일 앱 과정(2일) 우선 등록 안내 관리자 2013.11.21 2720
120 [델파이7 이후 새로운 기능] 코딩 생산성을 높여주는 코드에디터 기능들 Humphery 2015.04.21 2692
119 [10.3 리오] 델파이 언어의 새로운 변화: 인라인 변수 선언 관리자 2018.11.12 2671
118 블루투스 바코드 스캐너(BI-07) 안드로이드 라이브러리를 델파이에서 연동하는 방법 [1] file 험프리 2017.03.24 2652
117 델파이, 25년의 혁신 - 버전 1부터 10.3까지 버전별 핵심 기능 [2] 관리자 2020.05.12 2635
116 델파이 문법을 익힐 수 있는 문서모음 [2] Humphery 2014.11.03 2634
115 델파이를 이용해 구글크롬캐스트와 연결 Humphery 2014.07.22 2620
114 [XE7] Castalia로 델파이 코딩 생산성을 높일 수 있습니다.(XE7사용자 무료제공) Humphery 2014.12.09 2600
113 [따라하기] 도서대여 프로그램 만들기 - 2, 메인화면 개발 [2] file 험프리 2017.01.26 2435
112 델파이 개체를 메모리에서 해제할 때 Free와 FreeAndNil의 차이점 김원경 2017.02.01 2414
111 [마이그레이션] 함수(또는 변수)에 빨간밑줄이 가고 컴파일 시 Undeclared Identifier 오류 시 조치방법 file 험프리 2015.09.30 2367