SlideShare uma empresa Scribd logo
1 de 36
Baixar para ler offline
1
4장 – 프로그래밍 언어 기초 – 델파이와 C++
4장 – 프로그래밍 언어 기초 – 델파이와 C++...................................................................................................1
소개............................................................................................................................................................................2
개체 지향 프로그래밍 (OOP).................................................................................................................................3
속성 .................................................................................................................................................................... 4
메소드 ................................................................................................................................................................ 5
이벤트 ................................................................................................................................................................ 5
언어 가이드 ..............................................................................................................................................................7
델파이 기본 항목 ............................................................................................................................................ 7
델파이 데이터 타입 ...................................................................................................................................... 11
델파이 프로시저와 함수 .............................................................................................................................. 14
델파이 연산자 ................................................................................................................................................ 15
파이어몽키 어플리케이션의 프로그램 구조 .......................................................................................................21
예제 “파이어몽키 HD 어플리케이션 – 델파이” 프로젝트 콘텐트
메인 프로그램 소스 코드 파일 – Project1.dpr.......................................................................................... 21
델파이 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기..................................................................... 22
예제 “파이어몽키 HD 어플리케이션 – C++빌더” 프로젝트 콘텐트
C++ 프로젝트 메인 소스 코드 – Project6.cpp .......................................................................................... 24
C++ 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기.......................................................................... 27
C++ 어플리케이션 메인 폼 – 유니트 소스 코드 및 헤더 파일.......................................................... 28
폼 사용하기 ............................................................................................................................................................29
델파이 및 C++ 예제 프로그램 중 하나 탐색하기 – ControlsDemo.............................................................30
오브젝트 설계(UML 클래스 다이어그램을 사용하여).......................................................................................30
윈도우와 맥 플랫폼 특정 코드 처리...................................................................................................................32
요약, 해야 할 일, 리소스......................................................................................................................................34
2
소개
"RAD Studio"의 C + +이나 델파이에서 파이어몽키 어플리케이션을 개발할 수 있는데, 둘 다 모두 전세계의
수백만 개발자들에 의해 사용되는 컴포넌트 기반의 개체 지향 프로그래밍 언어로 배우기 쉽습니다.
델파이는 우아하고 배우기 쉬운 개체지향 언어로서 오브젝트 파스칼을 기초로 되어 있으며, 읽기 쉬운
코드, 빠른 컴파일, 그리고 모듈 프로그래밍을 위한 여러 개의 유니트 파일들을 사용하는 등 많은
장점들을 포함합니다. 델파이는 RAD Studio 컴포넌트 프레임워크와 환경을 지원하는 특별한 기능들을
갖고 있습니다.
범용적으로 사용되는 개체지향언어인 C++ 에서도 파이어몽키 어플리케이션을 개발 할 수 있습니다.
C++빌더의 RAD 환경에서 개발자가 유저 인터페이스를 시각적으로 디자인 할 수 있으며 데이터와
서비스에 연결 할 수 있습니다 단 코드는 ANSI/ISO 호환의 C 와 C++입니다. C++을 사용하여 신속한
개발 생산성을 갖습니다.
4장에서는 어떻게 델파이와 C ++ 프로그래밍 언어로 윈도우와 맥 용 어플리케이션을 작성 하도록
도와주는 파이어몽키 비즈니스 어플리케이션 플랫폼을 작업하는지에 대해서 살펴보겠습니다. 델파이와
C++의 현대적 기능을 다루는 도서, 온라인 자습서와 비디오 등이 많이 있기 때문에 전체 언어 사양에
대해서는 다루지 않겠습니다.
델파이와 C++ 언어 가이드는 엠바카데로 DocWiki 에서 보실 수 있습니다:
 http://docwiki.embarcadero.com/RADStudio/XE2/en/Delphi_Language_Guide_Index
 http://docwiki.embarcadero.com/RADStudio/XE2/en/C%2B%2B_Language_Guide_Index
이 장의 끝 부분에서 델파이와 C++ 언어 정보를 볼 수 있는 소스의 추가적인 링크를 알려드리도록
하겠습니다.
3
개체 지향 프로그래밍 (OOP)
개체-지향 프로그래밍은 코드의 재사용과 데이터의 캡슐화를 강조하는 구조적인 프로그래밍의
확장입니다. 여러분이 클래스를 정의 했을 경우 다른 개발자들도 다른 어플리케이션에서 이
클래스를 사용할 수 있기 때문에 개발 시간을 줄이고 생산성을 향상시킵니다.
클래스는 데이터를 캡슐화하고 동작하는 데이터 타입입니다. 개체 지향 프로그래밍 전에는, 데이터와
동작들 (함수들)이 분리된 요소로 취급되었습니다. 개체는 클래스의 인스턴스입니다. 즉 인스턴스
타입의 값이 클래스 입니다. 클래스와 클래스의 인스턴스 사이의 차이점이 크게 중요하지 않은 이
문서에서는 개체라는 용어는 명확하지 않게 자주 사용됩니다. "개체"라는 용어는 또한 클래스에 참조
할 수 있습니다.
파스칼의 레코드나 C의 구조체를 알고 있다면 오브젝트를 이해하기 용이합니다. 레코드는 데이터를
포함하는 필드들로 구성되어 있으며 필드들은 각각의 타입들로 구성됩니다. 레코드는 다양한 데이터
요소들을 집합을 참조하는 것이 용이합니다.
개체 또한 데이터 요소들의 집합입니다만 개체는 레코드나 구조체와 다르게, 자신의 데이터들을
동작하는 함수나 프로시저를 포함합니다. 이러한 프로시저나 함수들을 메소드라고 지칭합니다.
단일 유니트에서의 데이터 및 기능의 결합을 캡슐화라고 합니다. 캡슐화와 더불어 개체-지향
프로그래밍은 계승(inheritance)과 다형성(polymorphism)이라는 특징이 있습니다.
계승은 조상이라 불리는 다른 오브젝트로부터 기능을 파생하는 것을 의미합니다; 오브젝트들은 계승된
행위들을 오버라이드할 수 있습니다.
다형성은 같은 조상에서 파생된 다른 오브젝트들이 가끔 같은 메소드와 속성 인퍼페이스를 지원하는
것을 의미합니다. 개체-지향 프로그래밍에서의 다형성은 다른 오브젝트들이 각기 구현한 동일한
이름의 메소드를 사용가능 하도록 해 주는 방법입니다. 예를 들면, 오브젝트에 “speak”를 요청할 수
있습니다 그러나 조상의 구현 부분에 따라 “speak” 메소드는 사람은 말을 하고, 개는 짖고, 전신을
통해 모스코드를 보내고, 고래는 수중 소리를 방출하고 HTTP를 통해 JSON 패킷을 보냅니다.
영역(Scope)는 오브젝트의 필드, 속성과 메소드의 접근성을 결정합니다. 클래스 안의 선언된 모든
멤버들은 해당 클래스에서 사용할 수 있으며 그 하위 클래스에서 거의 사용할 수 있습니다. 비록
메소드의 구현 코드는 클래스 선언 외부에 나타나지만, 메소드는 클래스 선언부 안에 선언되어 있기
때문에 여전히 클래스의 영역 안에 있습니다.
4
오브젝트
오브젝트는 고정 또는 변수 값(또는 값의 설정)을 저장할 수 있는 메모리의 특정 지역입니다.
(오브젝트라는 단어의 사용은 개체-지향 프로그래밍에서 사용되는 일반 적인 용어와는 다릅니다.) 각
값은 연관된 이름과 또한 데이터 타입으로 알려진 타입을 갖습니다. 이름은 오브젝트에 접근 하기
위해 사용됩니다. 이 이름은 단순한 식별자 일수도 있고 또는 오브젝트를 유일하게 참조할 수 있는
복잡한 표현식이 될 수도 있습니다. 타입은 이런 이유로 사용됩니다:
 올바른 메모리 할당 요구를 결정하기 위해
 후속 액세스하는 동안 개체에 있는 비트 패턴을 해석하기 위해
 많은 타입의 검사 상황에서, 불법 할당을 방지하기 위해
선언은 식별자와 오브젝트 사이의 필요한 매핑을 설정합니다. 각각의 선언은 데이터 타입에 따른
식별자와 연결합니다. 정의 선언으로 알려진 대부분의 선언은 또한 개체의 생성(장소와 시간)을
설정합니다. 즉, 물리적 메모리와 가능한 초기화의 할당입니다. 참조 선언으로 알려진 선언은 단순히
컴파일러에게 자신의 식별자와 타입을 소개합니다. 같은 식별자에 많은 참조 선언이 있을 수 있으나,
특히 다중 파일 프로그램에서는 그 식별자에 대한 단 하나의 정의 선언만 허용됩니다.
일반적으로 말해서, 식별자는 소스 코드에 선언하기 전에 프로그램에서 사용할 수 없습니다. 이 규칙
(앞으로 참조라고도 함)에 대한 합법적 예외는 레이블, 선언하지 않은 함수 호출, 클래스, 구조체,
유니온 태그입니다.
속성, 메소드와 이벤트
파이어몽키용 컴포넌트에서, 클래스들은 속성, 메소드와 이벤트로 구성됩니다. 각 클래스들은 데이터
멤버 (속성), 데이터를 동작하는 함수(메소드)와 클래스의 사용자와 상호 작용하는 방법(이벤트)를
포함합니다.
속성
속성은 오브젝트의 시각적인 형태나 동작에 영향을 주는 특성입니다. 예를 들면, Visible 속성은
어플리케이션 인터페이스에서 오브젝트가 보일 것인지 아닌지를 결정합니다. 잘 설계된 속성들은
컴포넌트를 사용하고 유지 보수하기 쉽게 해줍니다.
다음은 속성들의 일부 유용한 특징들입니다:
 실행 시에만 사용할 수 있는 메소드와 다르게, 일부 속성들은 설계 시점에 변경 할 수 있으며
IDE에서 컴포넌트가 변경될 때 즉시 피드백을 할 수 있습니다.
 일부 속성들은 시각적으로 오브젝트의 값을 변경 할 수 있는 오브젝트 인스펙터에서 접근할
수 있습니다.
 설계 시에 속성을 설정하는 것은 코드 작성하는 것보다 쉽고 코드를 유지 보수하기 쉽게
해줍니다.
5
 데이터가캡슐화되어있기때문에속성의값을가져오고설정하는방법으로특별한처리는오브
젝트의사용자에게보이지않도록수행할수있습니다캡슐화부분이실제오브젝트의Private
Protected입니다
 속성에 액세스하는 동안 이벤트를 트리거 하거나 다른 데이터를 수정하는 로직을 구현할 수
있습니다. 예를 들어, 하나의 속성의 값을 변경하면 다른 속성의 값도 변경하기를 요구할
수도 있습니다. 속성을 위해 생성된 메소드를 변경 할 수 있습니다. 속성은 virtual이 될 수도
있습니다.
 하나의 속성은 하나의 오브젝트에 제한되지 않습니다. 하나의 오브젝트에서 하나의 속성을
변경하는 것이 몇 몇의 오브젝트에 영향을 줄 수 있습니다. 예를 들면, 라디오 버튼의
Checked 속성을 True로 설정하면 그룹 안에 있는 모든 라디오 버튼에 반영됩니다.
메소드
메소드는 오브젝트의 행위를 지정합니다. 메소드는 클래스와 연관된 프로시저와 함수입니다. 메소드는
같은 클래스 안에 어떠한 가시성 영역이든 모든 멤버를 액세스 할 수 있습니다 클레스 선언 안에,
메소드는 프로시저와 함수 선언부가 나타납니다. 클래스가 선언된 후에 같은 모듈 안에, 각 메소드는
선언부 정의에 따라 구현되어야 합니다.
메소드의 구현 안에서, Self (델파이)식별자 또는 this (C++)는 어느 오브젝트에서 메소드가 호출되었는지
오브젝트를 참조합니다.
클래스에 선언된 메소드들은 아래 테이블에 표시되듯이 3가지 카테고리로 분류됩니다.
카테고리 델파이문법 C++ 문법 Self (델파이) 또는 this (C++) 의미
Regular N/A N/A 클래스 인스턴스
Static static static N/A
Class class __classmethod 메타-클래스 인스턴스
이벤트
이벤트는 프로그램에 의해 인식되는 행동이나 사건입니다. 대부분의 현대 어플리케이션들은 이벤트에
대해 반응하도록 설계되어 있기 때문에 이벤트-유발 프로그램이라고 합니다. 프로그램에서 개발자는
사용자가 어떠한 작업을 수행할 것인지 예를 들어, 사용자가 메뉴 항목을 클릭할 지, 버튼을 클릭할 지
또는 일부 텍스트를 표시할지 등 예측할 수 있는 방법이 없습니다. 같은 제한된 순서에서 항상
실행하는 코드를 작성하는 것보다 특정 이벤트를 처리하기 위한 코드를 작성할 수 있습니다.
이벤트가 어떻게 트리거 되는 지와 상관없이, 파이어몽키 오브젝트는 해당 이벤트를 처리하기 위한
코드를 작성했다면 코드가 실행되고 그렇지 않으면, 디폴트 이벤트 핸들링 동작이 발생합니다.
6
Private, Protected, Public 및 Published
클래스 타입 선언은 필드와 메소드들의 접근성을 제어하는 세 부분 또는 네 부분을 포함합니다:
 public 부분은 특별한 접근 제한이 없는 필드와 매소드를 선언합니다. 클래스 인스턴스와 하위
클래스들은 이 곳에 선언된 필드와 메소드들에 접근할 수 있습니다. public 멤버는 클래스를
소유하는 곳, 즉 클래스가 선언된 유니트와 해당 유니트를 사용하는 어떠한 유니트에서도
접근 가능합니다.
 protected 부분은 일부 제한을 가진 필드와 메소드를 포함합니다. Protected 멤버는 클래스가
선언된 유니트 안에서와 하위 클래스의 유니트와 상관없이 하위 클래스에서만 접근
가능합니다,
 private 부분은 엄격한 접근 제한이 있는 필드와 메소드를 선언합니다. Private 멤버는 선언된
유니트에서만 접근 가능합니다. Private 멤버는 클래스 안에서 public 또는 published 메소드들과
속성들을 구현하기 위해서 자주 사용됩니다.
 TPersistent에서 파생된 클래스에서, published 부분에 설계 시점에 사용할 수 있는 속성과
메소드들을 선언합니다. Published 멤버는 public 멤버와 동일한 가시성을 가지지만
컴파일러는 설계 시에 오브젝트 인스펙터에 표시되는 Published 속성과 메소드를 위한 런타임
정보를 생성합니다.
속성, 메소드를 선언할 때 새로운 멤버는 이 네 부분 중 하나에 추가됩니다. 이 네 부분은 가시성을
표시하는: private, protected, public, published 부분입니다.
생성자(Constructor)와 파과자(Destructor)
생성자는 오브젝트 인스턴스를 생성해주고 초기처리 하는 특별한 메소드 입니다. 파괴자는 호출된
오브젝트를 파괴하고 메모리를 해제하는 메소드 입니다.
델파이 생성자와 파괴자에 대한 더 많은 정보는 엠바카데로 DocWiki 에서 보실 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/en/Methods#Constructors
C++ 생성자와 파괴자의 더 많은 자료는 엠바카데로 DocWikit 에서 보실 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/en/Introduction_To_Constructors_And_Destructors
7
언어 가이드
이 섹션은 델파이의 구성 요소와, 데이터 타입, 문장, 함수, 프로시저 및 연산자에 대한 정보를
포함하는 간략한 개요를 제공합니다.
기본 항목
델파이에서 기본 항목은 식별자, 숫자, 문자, 레이블과 주석들을 포함합니다. 각각을 살펴 보도록
하겠습니다.
델파이 기본 항목
키워드(때로는 예약어라 불리는)를 포함한 델파이의 필수 언어 항목은 지시어, 식별자, 숫자, 문자열,
레이블, 주석과 컴파일러 지시어등 입니다.
키워드
다음과 같은 키워드(예약어)는 재정의 할 수 없으며 식별자로 사용할 수 없습니다:
and, array, as, asm,
begin,
case, class, const, constructor,
destructor, dispinterface, div, do, downto,
else, end, except, exports,
file, finalization, finally, for, function,
goto,
if, implementation, in, inherited, initialization,
inline, interface, is,
label, library,
mod,
nil, not,
object, of, or,
packed, procedure, program, property,
raise, record, repeat, resourcestring,
set, shl, shr, string,
then, threadvar, to, try, type,
unit, until, uses,
var,
while, with,
xor
참고: 위 표에 추가적으로, 클래스 타입 선언부분에 예약어로 자동으로 생기지만 지시어로는 분류되지
않는 private, protected, public, published등이 있습니다
at 과 on 은 또한 특별한 의미를 가지고 있지만 예약어로 취급하지는 않습니다 object 키워드는
메소드 포인터를 선언하기 위해서 사용됩니다.
지시어
델파이는 여러 개의 지시어를 가지고 있습니다. 지시어란 소스 코드의 특정 위치에서 특별한 의미를
갖는 단어를 말합니다. 지시어 타입은 델파이에서 특별한 의미를 갖습니다만, 예약어와 다르게 사용자-
지정 식별자가 발생하지 않는 컨텍스트에서만 표시됩니다.
권장사항은 아니지만 – 지시어와 정확히 같은 형태의 식별자를 선언 할 수 있습니다.
absolute, abstract, assembler, automated,
8
cdecl, contains (7),
default, delayed (11), deprecated, dispid, dynamic,
experimental, export, external,
far (1) ,final, forward,
helper (8),
implements, index, inline (2),
library (3), local (4),
message,
name, near (1), nodefault,
operator (10), out, overload, override (7),
package, pascal, platform,
private, protected, public, published,
read, readonly, reference (9), register,
reintroduce, requires (7), resident (1),
safecall,sealed (5), static, stdcall, strict, stored
unsafe
varargs, virtual
winapi (6), write, writeonly
주의: 1. far, near과 resident는 폐기되었습니다. 2. inline 은 인라인 프로시저와 함수를 표시하기 위해
프로시저와 함수 선언 끝 부분에 지시어 스타일로 사용되지만 터보 파스칼에서는 예약어가 됩니다. 3.
library 프로젝트 소스 코드에서 첫 토큰으로 사용되었을 때 또한 키워드입니다; 이것은 DLL
프로젝트라는 것을 알려줍니다. 그렇지 않으면, 사용 때 이 심볼을 표시하여 라이브러리임을 알려
줍니다. 4. local 은 카일릭스 지시어이고 델파이 윈도우32에서는 무시합니다. 5. Sealed는 클래스
지시어입니다: 'class sealed'. sealed 클래스는 더 이상 확장(C++에서 final과 같이) 또는 파생할 수
없습니다. 6. winapi는 델파이 Win32에서 stdcal와 동일합니다. 64-비트는 다릅니다. 7. Package는 첫 번째
토큰으로 사용하면 패키지를 나타내고 package 구문을 사용하도록 합니다. requires 와 contains는
패키지에서만 사용하는 지시어입니다. 8. Helper는 "class helper for”로 나타냅니다.
9. reference는 함수나 프로시저의 참조를 가리킵니다. 10. Operator는 클래스 연산자를 가리킵니다. 11.
delayed 지시어는 라이브러리와 패키지에서 기술됩니다.
식별자
식별자는 상수, 변수, 필드, 타입, 속성, 프로시저, 함수, 프로그램, 유니트, 라이브러리와 패키지들을
표시합니다.
 식별자는 255자를 넘지 않는 범위에서 사용할 수 있습니다. 식별자는 반드시 알파벳 문자로
시작해야 하며, 식별자 첫 문자는 유니코드 문자와 (_)와 스페이스는 포함할 수 없습니다.
 첫 문자 후에는 영숫자 문자, 유니코드 문자, 숫자와 밑줄 등을 사용할 수 있습니다.
 예약어는 식별자로 사용할 수 없습니다.
 델파이 언어는 대소문자 구분을 하지 않기 때문에, CalculateValue와 같은 식별자는 사용할 수
있는 방법 중에 하나입니다.
9
숫자
 정수와 실수 상수는 쉼표나 공백 없이 숫자의 연속으로 십진수 표기법으로 표현하고, 기호를
표시하기 위해 앞에 + 또는 - 연산자로 시작 할 수 있습니다. 기본 값은 양수이며(예를 들어,
67258은 +67258과 동일합니다)와 미리 정의 된 가장 큰 실수 또는 정수 타입의 범위 안에
있어야 합니다.
 소수점 또는 지수가 있는 숫자는 실수를 나타내는 반면 다른 숫자는 정수를 나타냅니다.
 실수 내에서 문자 E 또는 e가 나타나면 "열 배"을 의미합니다. 예를 들어, 7E2 는 7 * 10^2를
의미하고, 12.25e+6 와 12.25e6 둘 다 12.25 * 10^6를 의미 합니다.
 예를 들어 접두어 달러-기호 $8F는 16 진수 숫자를 나타냅니다. 이전 없이 16 진수 – 단 항
연산자는 양수로 이동합니다. 할당하는 동안, 16 진수 값이 수신 타입의 범위 밖이라면
정수(32 비트 정수)의 경고 메시지가 나타나는 경우를 제외하고는 오류가 발생합니다. 이
경우, 정수의 양수 범위를 초과하는 값은 2의 보수 정수 표시와 일치하는 방식으로 음수로
이동합니다.
문자열
 문자열은 또한 리터랄 문자열이나 문자열 상수라고도 부르며 인용 문자열, 제어 문자열, 인용
및 제어 문자열의 조합으로 구성되어 있습니다. 인용 기호(‘ ‘)를 사용하여 문자열을
표시합니다.
 인용 문자열은 연속된 문자이며 ANSI 또는 멀티 바이트 문자 세트로, 한 줄에 작성하고
아포스트로피로 둘러쌉니다. 아포스트로피 사이에 아무것도 없는 인용 문자열은 널
문자열입니다. 인용 문자열의 두 개의 연속 아포스트로피는 단일 문자를 나타냅니다.
 문자열은 UTF-16으로 인코딩 된 유니 코드 문자열로 내부적으로 표현됩니다. 기본 다국어
평면(Basic Multilingual Planel :BMP)의 문자는 2 바이트가 필요하고 BMP가 아닌 문자에서는 4
바이트가 필요합니다.
 제어 문자열은 하나 이상의 연속된 제어 문자들로 각각의 문자는 0 ~ 65535 (십진수)까지 또는
UTF-16 인코딩 $ 0부터 $ FFFF (16 진수)까지 일정한 부호 없는 정수 다음에 # 기호로 구성되며
지정된 코드 값에 해당하는 문자를 나타냅니다. 각 정수는 문자열에서 2 바이트로 내부적으로
표현됩니다. 제어 문자와 멀티 바이트 문자를 표시하는데 매우 유용합니다.
레이블
 레이블로 식별자 또는 양수를 사용할 수 있습니다. 델파이 컴파일러는 0부터 4294967295
(uint32 범위)까지 숫자 레이블을 허용합니다.
 레이블은 goto 문에서 사용됩니다.
10
주석문과 컴파일러 지시어
구분 기호로 작동 할 때를 제외하고는 주석은 컴파일 되지 않습니다 또는 컴파일러 지시어. 주석을
작성하는 몇 가지 방법이 있습니다:
{왼 쪽과 오른쪽 괄호 사이에 텍스트는 주석입니다. }
(*왼쪽 괄호-더하기-*와 *-더하기-오른쪽 괄호 사이의 텍스트 역시 주석입니다 *)
// 슬래시 두 개와 라인 끝 사이의 텍스트는 주석입니다.
주석은 중첩할 수가 없습니다. 예를 들어, (* {} *) 입니다. 이 형태도 주석을 포함하는 코드 섹션을
주석처리 하는데 매우 유용합니다.
주석 문자의 세 가지 유형을 사용하는 방법과 시기에 대한 몇 가지 권장 사항입니다:
 개발하는 동안 만든 임시 변경 사항에 대한 주석은 이중 슬래시 (/ /)를 사용합니다.
 작업하는 동안 빠르게 더블 슬래시 문자를 삽입하기 위해 코드 편집기의 편리한 CTRL + /
(슬래시) 방법을 사용할 수 있습니다.
 개발 주석 및 다른 주석을 포함한 코드 블록 주석 모두에 괄호 "(* ... *)"을 사용합니다
 이 주석 문자는 주석의 다른 유형을 포함하여 소스의 여러 행을 허용하며, 컴파일러에 의해
제거 할 수 있습니다.
 코드를 유지하기 위한 소스 문서에는 괄호({})를 사용합니다 {또는 (* 를 입력 한 후에 달러
기호 ($)를 포함한 주석은 컴파일러 지시어 입니다. 예를 들어, {$WARNINGS OFF}는 컴파일러가
경고 메시지를 생성하지 않는 것을 알려줍니다.
컴파일러 지시어의 전체 목록은 엠바카데로 DocWiki에서 찾을 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/XE2/en/Delphi_Compiler_Directives_(List)_Index
11
데이터 타입
델파이 데이터 타입
델파이 데이터 타입은 정수 데이터 타입, 실수 데이터 타입, 문자열과 문자 데이터 타입, 필드 데이터
타입, 불린 데이터 타입과 다른 데이터 타입의 컬렉션이 포함되어 있습니다.
정수 데이터 타입
 Byte: 8-비트 부호 없는 정수
 ShortInt: 8-비트 부호 있는 정수
 Word: 16- 비트 부호 없는 정수
 SmallInt: 16- 비트 부호 있는 정수
 Cardinal: 32- 비트 부호 없는 정수
 LongWord: 32- 비트 부호 없는 정수
 Integer: 32- 비트 부호 있는 정수
 LongInt: 32- 비트 부호 있는 정수
 UInt64: 64- 비트 부호 없는 정수
 Int64: 64- 비트 부호 있는 정수
 NativeInt: 64-비트 또는 32-비트 플랫폼에 따라 달라지는 부호가 없는 정수
12
문장
델파이와 C++에서의 문장은 할당과 복합문이 있으며 if 와 case (델파이)와 switch (C++)등을 포함한
조건문이 있습니다. for (델파이와 C++), repeat (델파이), while(델파이와 C++) 와 do while (C++) 문장들을
포함한 반복문이 있습니다. 이 부분은 각 각 두 언어의 문장 타입들을 다루게 될 것입니다.
델파이 문장
할당 문장: 변수를 할당하거나 다른 변수에 식을 할당합니다.
variable := variable or expression
복합문: 몇 개의 문장을 블록에 포함하여 사용합니다.
begin
<statement(s)>
End
If 문: 하나 이상의 문장의 조건 테스트 및 실행.
if <logical expression> then
<statement or compound statement>
if <local expression> then
<statement or compound statement>
else
<statement or compound statement>
Case 문: 표현식의 값들과 각 값들에 대한 실행 문장들을 나열합니다. 때론 case 문이 중첩된
if/then/else 문보다 읽고 따라가기가 더 쉽습니다.
case expression of
caselist1: <statement or compound statement>
…
caselistn: <statement or compound statement>
else
<statement or compound statement>
end
For 문: 값 또는 컬렉션 또는 열거 형의 범위에 기초하여 문장들을 반복합니다.
for <counter> := <initial value> to <final value>
do <statement or compound statement>
for <counter> := <initial value> downto <final value>
do <statement or compound statement>
for <element> in <some collection or enumeration>
do <statement or compound statement>
Repeat 문: 끝에서 논리 테스트를 하면서 루프를 반복합니다.
repeat
<statement of block of statements>
until <logical expression>
13
While 문: 처음에 논리 테스트를 하는 반복 루프.
while <logical expression> do
<statement or compound statement>
GoTo 문: (일부 컴퓨터 공학자에 의한 구조화 프로그래밍에서는 안 좋음)
goto <label>
Try 와 Raise 문: 예외를 걸러내고, 예외를 발생 시킵니다.
try
<statement(s)>
except
<exception handling statements>
end
try
<statements>
finally
<statements>
end
raise <exception>
14
함수와 프로시저
델파이와 C++ 모두 제사용 가능한 루틴 작성을 지원합니다.
델파이 프로시저와 함수
루틴이라 불리는 프로시저와 함수는 프로그램의 다른 위치에서 호출되는 독립적인 문장 블록입니다.
함수는 실행할 때 반환 값이 있는 루틴입니다. 프로시저는 반환 값이 없는 루틴입니다. 함수 호출 시,
결과 값을 반환하기 때문에, 할당 문에서 표현식으로 사용될 수 있습니다.
프로시저와 함수를 선언 할 때, 루틴의 이름, 매개변수의 유형과 수, 그리고 함수인 경우는 반환 값의
유형들을 지정합니다; 선언의 이 부분은 가끔 헤딩, 또는 헤더 프로토타입라고 합니다. 그리고
프로시저와 함수가 호출될 때 실행하는 코드의 블록을 작성합니다; 이 부분을 루틴의 바디 또는
루틴의 블록이라고 부릅니다. 델파이 프로시저와 함수의 더 자세한 내용은 엠바카데로 DocWiki에서
보실 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/en/Procedures_and_Functions
프로시저 선언
델파이 프로시저 선언 형식입니다:
procedure procedureName(parameterList); directives;
localDeclarations;
begin
statements
end;
procedureName(프로시저이름)은 유효한 식별자이고, statements(문)은 프로시저가 호출 될
때 실행하는 문장의 순서입니다, 그리고 parameterList(매개변수 목록), directives(지시어),
localDeclarations(로컬 선언)는 선택 사항입니다.
프로시저의 구문 블록 안에서, 프로시저 로컬 선언 부분에 선언된 다른 식별자와 변수를 사용할 수
있습니다; 매개변수 목록은 로컬 변수 세트를 정의하므로 로컬 선언 부분에 매개변수 이름을 다시
선언하지 않습니다. 결과적으로, 모든 프로시저 선언 안의 모든 식별자를 사용할 수 있습니다.
함수 선언
함수 선언은 반환 유형과 값을 지정하는 것을 제외하고는 프로시저 선언과 동일합니다. 함수 선언
형식은 다음과 같습니다:
function functionName(parameterList):returnType;directives;
local Declarations;
begin
statements
end;
functionName(함수 이름)은 유효한 식별자이고, returnType (반환값)은 반환값 타입이며,
statements(문)은 함수가 호출 될 때 실행하는 문장의 순서입니다. parameterList (매개변수
15
목록), directives (지시어), local Declarations (로컬 선언)은 선택 사항입니다..
함수의 구문 블록은 프로시저에 적용하는 동일한 규칙으로 적용됩니다. 구문 블록 안에서, 함수 로컬
선언 부분에 선언된 다른 식별자와 변수, 매개변수 목록에서 매개 변수 이름 및 함수 선언 안의 모든
식별자들을 사용할 수 있습니다. 또한, 미리 정의된 변수 Result 처럼 함수 이름 자체가 반환 값을
갖는 특별한 변수 역할을 합니다.
구문 블록 안에서, 선언된 반환 타입과 일치하는 값을 할당하는 한, 함수 이름이나 Result에 값을
할당할 수 있습니다. 함수의 실행이 종료될 때 Result 또는 함수의 이름에 할당 된 값이 무엇이든
함수의 반환 값이 됩니다. 함수가 Result 또는 함수 이름에 값을 할당하지 않고 종료하면, 함수의 반환
값은 정의 되지 않습니다.
연산자
두 언어는 이진 산술, 논리 연산, 관계 연산자 및 포인터 연산자를 포함합니다. 델파이는 또한
집합 및 문자열 연산자를 포함하고 있습니다.
델파이 연산자
이진 산술 연산자
연산자 연산 피연산자 타입 결과 값 유형 예제
+ 더하기 정수, 실수 정수, 실수 X+Y
- 빼기 정수, 실수 정수, 실수 Result -1
* 곱하기 정수, 실수 정수, 실수 P * InterestRate
/ 나누기 실수, 실수 실수 X/2
Div 나누기 정수, 실수 정수 Total div UnitSize
Mod 나머지 정수 정수 Y mod 6
단항 산술 연산자
연산자 연산 피연산자 타입 결과 값 유형 예제
+ sign identity Integer, realinteger real +7
- sign negation Integer, realinteger real -X
다음과 같은 규칙이 산술 연산자에 적용됩니다:
x와 y의 타입에 관계없이, X / Y 유형은 확장(Extended) 타입입니다. 다른 산술 연산자의 경우, 적어도
하나의 피 연산자가 real인 경우 결과는 Extended(확장) 타입이며, 그렇지 않으면 하나 이상의 피
연산자가 Int64인 경우 결과는 Int64 타입이며, 그렇지 않으면 결과 유형은 integer 입니다.
피연산자의 유형이 integer의 하위 범위라면, integer 타입으로 간주합니다.
x div y 의 값은 x / y 의 0에서 가장 가까운 정수로 반올림 된 값입니다.
16
mod 연산자는 피연산자를 나누어 얻은 나머지를 반환합니다. 즉, x mod y = x - (x div y) * y.
x / y, x div y, 또는 x mod y 등의 표현 식에서 y가 제로인 경우 실행 시에 오류가 발생합니다.
불린 연산자
불린 연산자는 not, and, or, 및 XOR는 모든 불린 유형의 피연산자를 취하고 불린 타입의 값을
반환합니다.
연산자 연산 피연산자 타입 결과 값 유형 예제
Not 부정 Boolean Boolean not
And 연결 Boolean Boolean Done and (Total >0)
Or 분리 Boolean Boolean A or B
xor 배타적 분리 Boolean Boolean A xor B
논리(비트) 연산자
다음 논리 연산자는 정수 피연산자에 비트 조작을 수행합니다.
예를 들어, X (바이너리로)에 저장된 값이 001101이고 Y에 저장된 값이 100001이라면, 문: Z := X or Y; Z에
101101 값을 할당합니다.
연산자 연산 피연산자 타입 결과 값 유형 예제
Not bitwise 부정 integer integer not X
And bitwise and integer integer X and Y
Or bitwise or integer integer X or Y
xor bitwise xor integer integer X xor Y
shl bitwise shift left integer integer X shl 2
Shr bitwise shift left integer integer Y shr I
비트 연산자에 다음 규칙이 적용됩니다:
 not 연산의 결과는 피연산자와 같은 유형입니다.
 and, or, 또는 xor 연산의 피연산자가 모두 정수라면, 결과는 두 가지 유형의 가능한 모든 값을
포함하는 가장 작은 범위 미리 정의 된 정수 타입입니다.
 x shl y 와 x shr y 는 x의 값을 왼쪽으로 또는 y 비트의 오른쪽으로 이동하는데 x by 2^y로
곱하거나 나누기와 같습니다(x가 부호가 없는 정수인 경우); 결과는 x와 같은 타입입니다.
예를 들어, N이 01101 값 (10진수 13)을 저장하고 N sh 1 은 11010 (10진수 26)을 반환합니다.
y의 값은 x의 타입의 모듈로(MODULO) 크기로 해석된다는 것을 참고하십시오. 따라서 예를
들면, x가 정수이면 정수 32 비트이고 40 mod 32 는 8 이기 때문에, x shl 40는 x shl 8 로
해석됩니다.
문자열 연산자
연산자 연산 피연산자 타입 결과 값 유형 예제
+ 문자 연결 패킹된 문자 문자열 S + '.'
다음 규칙은 문자 연결에 적용됩니다:
17
 + 에 대한 피연산자는 문자열, 패킷 문자열 (문자 타입의 패킷 배열), 또는 문자가 될 수
있습니다.
 그러나, 피연산자 하나가 WideChar 유형이라면, 다른 피연산자는 반드시 long
string(UnicodeString, AnsiString 또는 WideString)이어야 합니다.
 + 연산의 결과는 모든 문자열 유형과 호환됩니다. 그러나, 피연산자 모두가 short strings 또는
characters 이고 결합된 길이가 255 보다 큰 경우라면, 결과는 첫 번째 255 문자까지 잘립니다.
포인터 연산자
관계형 연산자 <, >, <=, 및> = 은 PAnsiChar과 PWideChar (관계형 연산자를 참조)유형의 피연산자를 취할
수 있습니다. 다음 연산자는 또한 피연산자로 포인터를 사용할 수 있습니다. 포인터에 대한 더 자세한
정보는, 데이터 타입, 변수, 및 상수에서 포인터와 포인터 타입을 보십시오.
연산자 연산 피연산자 타입 결과 타입 예제
+ 포인터 더하기 문자 포인터, 정수 문자 포인터 P+I
- 포인터 빼기 문자 포인터, 정수 문자 포인터, 정수 P-Q
^ 포인터 역참조 포인터 포인터 기본 타입 P^
= 등식 포인터 불린 P=Q
<> 부등식 포인터 불린 P <> Q
^ 연산은 역 참조 포인터입니다. ^연산의 피연산자는 일반 포인터를 제외하고 모든 유형의 포인터가 될
수 있고 역참조 전에 타입캐스트 되어야 합니다.
P 와 Q가 같은 주소를 포인트 하는 경우에만 P = Q 는 참(True)입니다; 그렇지 않다면, P <> Q 는
참(True)입니다.
+ 와 - 연산자는 문자 포인터의 오프셋을 증가하고 감소할 수 있습니다. 또한 두 문자 포인터의
오프셋 사이의 차이를 계산하기 위해 – 연산자를 사용할 수 있습니다. 다음은 적용되는 규칙입니다:
 I 는 정수이고 P는 문자 포인터라면, P + I는 P에 주어진 주소에 I를 더합니다; 즉 P 뒤에 I 문자
주소에 대한 포인터를 반환합니다. (I + P 표현식은 P + I와 동일합니다.)
 P – I는 P에 주어진 주소에서 I를 뺍니다; 즉 P 전에 I 문자 주소에 대한 포인터를 반환합니다.
PAnsiChar 포인터에서는 true입니다; PWideChar 포인터 경우 P + I는 SizeOf(WideChar)를 P에
더합니다.
 P 와 Q 모두 문자 포인터라면, P - Q 는 P (더 높은 주소)에 주어진 주소와 Q (더 낮은 주소)에
주어진 주소 사이의 차이를 계산합니다; 즉, P와 Q 사이에 문자의 수를 나타내는 정수를
반환합니다. P + Q는 정의 되어 있지 않습니다.
18
집합 연산자
다음 연산자는 피연산자로 집합을 사용합니다.
연산자 연산 피연산자 타입 결과 타입 예제
+ 합집합 set set Set1 + Set2
- 차집합 set set S - T
* 교집합 set set S * T
<= 작거나 같다 set Boolean Q <= MySet
>= 크거나 같다 set Boolean S1 >= S2
= 같다 set Boolean S2 = MySet
<> 같지 않다 set Boolean MySet <> S1
in 멤버에 속한다 ordinal, set Boolean A in Set1
다음 규칙은 +, -, 와 *에 적용됩니다:
 O는 X 또는 Y (또는 둘 다)에 속하는 경우에만 순서를 나타내는 O는 X + Y에 속합니다. O 가
X에는 속하지만 Y에는 속하지 않는 경우에만 O는 X – Y에 속합니다. O가 X 와 Y에 모두 속하는
경우에만 O 는 X * Y에 속합니다.
 결과 집합에서 A는 가장 작은 서수 값이고 B 는 가장 큰 값인 곳에서 a +, -, or * 연산의
결과는 A..B의 집합 유형입니다.
 다음 규칙은 <=, >=, =, <>, 및 in에 적용됩니다:
 X의 각 멤버가 Y의 멤버인 경우에만 X <= Y는 참(True)입니다; Z >= W는 W <= Z와 같습니다.
 U 와 V 가 정확히 같은 멤버를 가지고 있는 경우에만 U= V 는 참(True)입니다; 그렇지 않으면,
U <> V 는 참입니다. 순서를 나타내는 있는 O 와 집합 S인 경우, O가 S의 멤버인 경우에만 O in
S 는 참(True)입니다.
관계 연산자
관계 연산자는 두 피연산자를 비교하기 위해 사용됩니다. 연산자 =, <>, <=, 및 >= 또한 집합에
적용됩니다.
연산자/연산/피연산자 유형/결과 유형/예
 = 같다 클래스, 클래스 참조, 인터페이스, 문자열, 패킹 문자열 Boolean I
= Max
 <> 같지 않다 클래스 참조, 인터페이스, 문자열, 패킹 문자열 Boolean
X <> Y
 < 작다 문자열, 패킹 문자열 PCharBoolean
X<Y
 > 크다 문자열, 패킹 문자열 PCharBoolean
Len > 0
 <= 작거나 같음 문자열, 패킹 문자열 PCharBoolean
Cnt <= I
 >= 크거나 같음 문자열, 패킹 문자열 PCharBoolean I
19
>= 1
가장 단순한 유형에 대한, 비교는 간단합니다. 예를 들면, I = J 는 I 와 J 가 같은 값을 갖는 경우에만
참(True)이고 같은 값이 아닌 경우는 I <> J 는 참(True)입니다. 다음 규칙을 관계 연산자에 적용합니다:
 피연산자는 실수와 정수를 비교할 수 있다는 점을 제외하고, 호환 형식 이어야 합니다.
 문자열은 문자열을 구성하는 문자를 구성하는 순서 값에 따라 비교됩니다. 문자 타입은
길이가 1인 문자열로 간주합니다.
 두 패킷 문자열은 비교될 컴포넌트의 같은 수를 가지고 있어야 합니다. N 컴포넌트의 패킷
문자열이 문자열로 비교할 때 패킷 문자열은 길이 n의 문자열로 처리됩니다.
 두 개의 포인터가 같은 문자 배열 안을 포인트 한다면 PAnsiChar (와 PWideChar) 피 연산자
만을 비교하기 위해 연산자 <, >, <=, 및 >=를 사용합니다.
 연산자 = 와 <> 는 클래스와 클래스-참조 유형을 피연산자로 사용할 수 있습니다. 클래스
타입의 피연산자를 사용하여, = 와 <> 는 포인터에 적용되는 규칙에 따라 평가됩니다. 클래스
C 와 D 가 같은 오브젝트 인스턴스를 포인트 하는 경우에만: C = D 는 참(True)입니다, 그렇지
않으면 C <> D 는 참(True) 입니다. 클래스-참조 타입의 피연산자를 사용하면, C 와 D가 같은
클래스를 표시하는 경우에만 C = D는 참(True)입니다, 그렇지 않으면 C <> D 는 참(True)입니다.
클래스 안에 저장된 데이터는 비교하지 않습니다. 클래스에 대한 더 자세한 내용은 “클래스와
오브젝트”를 보십시오.
@ 연산자
@ 연산자는 변수의 주소 또는 함수, 프로시저, 및 메소드의 주소를 반환합니다; 즉, @는 피연산자에
대한 포인터를 생성합니다. 포인터에 대한 자세한 내용은 데이터 타입, 변수 및 상수에서 "포인터와
포인터 타입"을 참조하십시오. 다음 규칙들은 @에 적용됩니다:
 X가 변수 인 경우 @ X는 X의 주소를 반환합니다. (X가 프로시저 변수 인 경우 특별한 규칙이
적용됩니다, 데이터 타입, 변수 및 상수에서 "구문과 표현식에서 프로시저 타입"을
참조하십시오). 기본 {$ T} 컴파일러 지시자가 유효한 경우라면 @ X의 유형은 포인터입니다.
{$T+} 문장에서, T는 X 타입인 곳에서 @X는 ^T 유형입니다(이 차이는, 할당의 호환성을 위해
중요합니다, 할당 호환성을 참조하십시오).
 F가 루틴이라면(함수 또는 프로시저), @F는 F의 엔트리 포인트를 반환합니다. @F의 타입은
항상 포인터입니다.
 @가 클래스에 정의 된 메소드에 적용될 때, 메소드 식별자는 클래스 이름으로 접근해야
합니다. 예를 들면, @TMyClass.DoSomething 는 TMyClass 클래스의 DoSomething 메소드를
포인트 합니다.
 클래스와 메소드에 대한 자세한 정보는 클래스와 개체를 참조하십시오.
 참고: @연산자를 사용하는 경우, 주소를 컴파일 시점에 알 수 없고 런타임에 추출 할 수 없기
때문에 인터페이스 메소드의 주소를 구할 수 없습니다.
연산자 우선순위
복합 표현식에서 우선 순위 규칙은 연산이 수행되는 순서를 결정합니다.
20
연산자 우선 순위
@, not 첫 번째(가장 높은 순위)
*,/,div,mod,and,shl,shr,as 두 번째
+,-,or,xor 세 번째
=,<>,<,>,<=,>=,in,is 네 번째(가장 낮은 순위)
21
파이어몽키 어플리케이션의 프로그램 구조
File > New 메뉴에서 “FireMonkey HD Application – Delphi”, “FireMonkey 3D Application – Delphi”, “FireMonkey
HD Application – C++Builder” 또는 “FireMonkey 3D Application –C++Builder”를 클릭하여 파이어몽키를
사용한 새로운 윈도우와 맥 어플리케이션을 작성합니다. 선택을 한 후, 델파이 또는 C++ 프로젝트
파일(.dpr 또는 .cpp), 메인 폼 파일(.fmx)와 소스 코드 유니트(델파이의 .pas와 C++의 .cpp) 그리고 헤더
파일(C++ 프로젝트의 경우 .h)등이 생성됩니다.
예제 “파이어몽키 HD 어플리케이션 – 델파이” 프로젝트 콘텐트
시작 프로젝트를 선택한 후 아래 프로젝트 매니저 보기에서 내용을 찾을 수 있습니다.
메인 프로그램 소스 코드 – Project1.dpr
메인 프로그램 소스 파일은 다음 구문들을 포함합니다(프로젝트 매니저의 Project1.exe 노드에서 오른쪽
마우스 클릭하여 컨텍스트 메뉴에서 “View Source”를 선택하거나 또는 Project1.exe 노드가 선택되었을
때 Control-V를 누른다):
program Project1;
uses
FMX.Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
22
예약어 “program”은 여러분의 어플리케이션이 프로그램임을 표시합니다.“uses” 절은 프로그램을 컴파일
하기 위해 필요한 따로따로 컴파일 할 수 있는 모든 유니트의 목록들을 포함합니다(잠시 후에
유니트에 대한 자세한 내용을 다루겠습니다). “{$R *.res}” 컴파일러 지시어는 델파이 컴파일러가 모든
어플리케이션에서 필요한 리소스 파일(비트맵, 아이콘, 커서, 기타 등등)들을 포함하도록 합니다. “begin”
와 “end.” 구문 사이에 프로그램을 시작했을 때 실행되는 문장들을 정의합니다. 파이어몽키
어플리케이션 안에 메인 폼에 대한 “Application.CreateForm” 문이 하나는 있다는 것에
주목하십시오(어플리케이션에 여러 개의 폼이 있다면 하나 이상이 있을 수 있습니다).
Application.Run 문은 어플리케이션을 시작하고 어플리케이션을 닫을 때(또는 종료)까지 실행의 나머지
부분을 남겨두고 폼과 모든 이벤트 핸들러를 제어합니다.
델파이 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기
파이어몽키 어플리케이션의 메인 폼은 폼 자신을 제외한 다른 컴포넌트 없이 빈 폼으로 시작합니다.
폼 디자이너에서 볼 수 있고 코드 에디터에서 텍스트 모드로도 볼 수 있습니다.
23
델파이 어플리케이션 메인 폼 – 유니트 소스 코드
어플리케이션 메인 폼과 연관된 파일은 unit1.pas 소스 코드 파일입니다.
unit Unit1;
interface
uses
System.SysUtils, System.Types, System.UITypes,
System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
end.
예약어 unit는 따로 컴파일 되는 메인 폼의 소스 코드의 시작을 정의합니다(메인 프로그램 소스 코드와
별도로). 델파이 유니트는 Interface 섹션과 Implementation 섹션: 두 개의 메인 섹션으로 나눕니다.
Interface 섹션은 유니트에 대한 모든 타입, 상수 및 변수 선언을 포함합니다. Implementation 섹션은
함수, 프로시저,
메소드 및 이벤트 핸들러 어플리케이션 로직을 포함합니다.
Unit1의 Interface 섹션은 유니트를 컴파일 하기 위해 필요한 모든 파이어몽키 및 런-타임 라이브러리
유니트의 목록을 포함하는 uses 절을 포함합니다. Interface 섹션은 또한 TForm 부모 클래스로부터 계승
받은 TForm1 클래스 선언을 포함합니다. 델파이 클래스는 private, public 및 protected 섹션을 가지고
있습니다.
폼 디자이너에서 또는 코드 에디터에서 컴포넌트를 추가하는 경우, 컴포넌트의 선언은 TForm1
클래스에 추가될 것입니다.
Interface 안에 var 섹션은 폼 변수 Form1을 포함하는 모든 전역 변수를 선언합니다.
어플리케이션 로직에서 필요에 따라 이 섹션에 다른 전역 변수를 정의합니다.
처음에 시작 프로젝트를 작성할 때 Implementation 섹션은 어플리케이션 실행에 이 유니트에 대한
파이어몽키 폼 파일을 링크 할 수 있게 컴파일러에게 알려주는 {$ R *. fmx} 지시어만 포함합니다. “end.”
문은 컴파일러에게 유니트의 끝이라는 것을 알려줍니다.
컴포넌트의 이벤트 핸들러를 폼에 추가할 때, 이벤트 메소드가 Interface 섹션의 TForm1 클래스 선언
안에 나타나는 것을 보실 수 있습니다. 메소드 구현의 기본 골격 또한 Implementation 섹션에
표시됩니다.
24
예제 “파이어몽키 HD 어플리케이션 – C++빌더” 프로젝트 콘텐트
C++ 프로젝트 메인 소스 코드 – Project6.cpp
메인 프로그램 소스는 다음 구문들을 포함합니다(프로젝트 매니저의 Project6.exe 노드에서 오른쪽
마우스 클릭하여 컴텍스트 메뉴에서 “View Source”를 선택하거나 또는 Project6.exe 노드가 선택되었을
때 Control-V를 누른다):
//---------------------------------------------------------
#include <fmx.h>
#pragma hdrstop
#include <tchar.h>
//---------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
//---------------------------------------------------------
extern "C" int FMXmain()
{
try
{
Application->Initialize();
Application->MainFormOnTaskBar = true;
Application->CreateForm(__classid(TForm1),
&Form1);
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
catch (...)
{
try
{
throw Exception("");
25
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
}
return 0;
}
//---------------------------------------------------------
메인 프로그램 소스 코드에서 다음 라인들을 보실 수 있습니다:
#include
“#include <fmx.h>”는 컴파일러에 코드를 컴파일 하기 위해 필요한 파이어몽키 헤더 파일 선언을
가져오라고 알려줍니다. C 와 C++ 헤더 파일들은 보통 구현 코드에서 사용되는 타입, 클래스, 상수 밑
다른 아이템들의 선언을 포함합니다.
#include <header_name>
#include "header_name"
#include <macro_definition>
#include 지시어는 이름이 주어진 다른 파일들을(파일로 알려진, 헤더 파일 또는 헤더) 소스 코드
안으로 끌어 옵니다. 이 문법은 세 가지 버전이 있습니다:
 첫 번째와 두 번째 버전은 매크로 확장이 시도되지 않는다는 것을 의미합니다; 다시 말해서,
header_name 은 매크로 식별자로 절대 검사되지 않습니다. header_name은 확장자(헤더 파일에
대해 전통적으로. H) 및 옵션 경로 이름과 경로 구분 기호가 있는 유효한 파일 이름이어야
합니다.
 세 번째 버전은 #include 다음에 “<”첫 번째 공백이 아닌 문자로 표시한다면, 그것은
<header_name> 또는 " header_name "형식 중 하나로 유효한 구분 헤더 이름으로 매크로
식별자를 확장하는 매크로 정의가 있다고 가정합니다.
선행 처리기가 #include 라인을 제거하고 개념적으로 소스 코드의 그 지점에서 include 파일의 전체
텍스트로 대치합니다. 소스 코드 자체는 변경되지 않습니다, 그러나 컴파일러는 확대 텍스트를 봅니다.
#include 위치에 따라 포함된 파일 안의 모든 식별자의 범위와 기간에 영향을 줄 수 있습니다.
헤더_이름 안에 명시적 경로를 배치하는 경우라면, 디렉터리도 검색됩니다.
<header_name> 와 "header_name" 형식간의 차이점은 include 파일을 찾기 위해 채택하는 검색
알고리즘에 있습니다:
인용 형식 - "header_name" 버전은 사용자-제공하는 include 파일을 지정합니다; 파일들은 다음 순서로
검색됩니다:
 #include 문을 포함하는 파일과 같은 디렉터리.
 그 파일을 포함하는(#include) 파일들의 디렉터리들.
 현재 디렉터리.
 Include 파일 검색 경로(-I) 옵션에 따라 지정된 경로.
26
<>-괄호 형식 - <header_name> 버전은 기본 include 파일을 지정합니다. 검색이 include 파일 검색 경로(-
I) 옵션에 의해 정의 된 순서대로 include 디렉터리에서 각각의 연속으로 이루어집니다. 파일이 디폴트
모든 디렉터리에 없다면, 오류 메시지가 발생합니다.
#pragma
# pragma를 사용하여 또한 # pragma를 지원하는 다른 컴파일러를 방해하지 않고, 소스 코드에서
컴파일러 지시어를 설정할 수 있습니다. 컴파일러가 지시어-이름을 인식하지 못한다면 오류 또는 경고
메시지 없이 # pragma 지시어를 무시합니다.
"# pragma hdrstop의"라인은 “미리 컴파일 되는 헤더"를 만드는 것 중지하라고 컴파일러에게 알려줍니다.
미리 컴파일 되는 헤더 작성 및 사용은 두 가지 주요 가지 작업을 수행합니다.
C++ 파일의 컴파일 시간을 줄일 수 있습니다
컴파일 처리 해야 하는 코드 라인 수를 줄일 수 있습니다(일부의 경우, 크기의 여려 명령에 의해)
엠바카데로 DocWiki에서 미리 컴파일 된 헤더에 관한 더 자세한 내용을 보실 수 있습니다.
http://docwiki.embarcadero.com/RADStudio/en/Precompiled_Headers_Overview
USEFORM("Unit1.cpp", Form1)
USEFORM는 폼 이름("Form1에")와 폼과 관련된 소스 코드 유니트("Unit1.cpp")를 나열하는 C + +
매크로입니다.
extern "C" int FMXmain()
extern "C"는 C + + 프로그램에서 엉망이 되는 프로그램의 함수 이름을 방지하는 데 사용됩니다. 이
라인은 반환 유형이 "int" 또는 integer인 파이어몽키 메인 프로그램 함수의 이름을 정의합니다.
try, throw, catch
C++ 예외 처리는 3개의 키워드를 사용해야 합니다: try, throw, 및 catch. 키워드 throw 는 예외를
생성하는데 사용됩니다. try 블록은 예외를 발생하는 구문을 포함하고 하나 이상의 catch 문이
따라옵니다. 각 catch 문은 특정 예외를 처리합니다.
try 블록은 예외를 처리하고자 하는 하나의 문 또는 구문들을 포함합니다. 프로그램은 throw 문을
실행하여 예외를 발생합니다. throw 문은 일반적으로 함수 안에서 발생합니다. try 블록은 catch에 위해
지정된 핸들러에 의해 즉시 따라 오는 try에 의해 지정됩니다. try 블록은 프로그램이 실행하는 것처럼
제어의 흐름을 지정하는 구문입니다. 예외가 try 블록에서 발생되는 경우, 프로그램 제어는 적절한
예외 처리 핸들러로 전환됩니다.
핸들러는 예외를 처리 할 수 있도록 설계된 코드 블록입니다. C++ 언어는 try 블록 후 바로 하나
이상의 핸들러가 필요합니다. 프로그램은 프로그램이 생성 할 수 있는 각 예외에 대한 핸들러를
포함해야 합니다. throw 문은 다양한 유형의 오브젝트를 발생시킬 수 있습니다. C + + 개체는 일반적으로
값, 참조, 또는 포인터에 의해 발생 될 수 있습니다. 추가적으로, throw 문은 정수 또는 포인터와 같은
원시 타입을 throw 할 수 있습니다.
27
catch 문은 몇 가지 형식이 있습니다. 개체는 값, 참조, 또는 포인터에 의해 체크 할 수 있습니다. 또한,
const 수식은 catch 매개변수에 사용할 수 있습니다. 블록이 여러 가지 다른 종류의 예외를 잡을 수
있도록, 단일 try 블록에 대한 여러 catch 문들이 있을 수 있으며, 발생할 수 있는 각 예외에 대한
catch 문이 있어야 합니다.
단일 try 문에 대한 여러 개의 catch 문을 사용하여, 각 유형 예외에 대한 핸들러를 가질 수 있습니다.
예외 개체가 어떤 기본 클래스에서 파생했다면, 일부 파생된 예외에 대한 특화된 핸들러를 추가
할뿐만 아니라, 기본 클래스에 대한 일반적인 처리 핸들러를 포함 할 수 있습니다. 예외가 발생했을 때
이를 검색하고 싶은 순서대로 캐치 문을 배치하여 이 작업을 수행합니다. try 블록을 수행하면서
발생하는 모든 예외를 잡기 위한 핸들러를 원한다면, catch (...) 특별한 형식을 사용하십시오. 이를 모든
예외를 위해 호출 되야 하는 예외 처리 시스템이라고 합니다.
Application->
어플리케이션 개체를 사용하는 메인 프로그램에서 여러 라인을 보실 수 있는데 어플리케이션을
초기화하기 위한, 메인 폼을(메인 프로그램에서 여러 개의 폼을 가질 수 있거나 또는 코드에서 즉시
폼을 만들 수 있습니다)생성하기 위한, 어플리케이션을 "실행"하기 위한 어플리케이션의 메소드를
호출합니다. 파이어몽키는 일부 사용자 이벤트(File |Exit 메뉴 항목과 같은)로 프로그램을 종료할 때까지
또는 런타임 예외가 발생할 때까지 계속 실행합니다.
return 0
return 문은 메인 프로그램(또는 현재 함수)에서 다시 호출 루틴(이 경우, 다시 운영 체제) 으로
빠져나가는데 사용되는데 선택적으로 값을 반환합니다. 제로 값은 프로그램의 성공적인 종료를
나타냅니다. 다른 값을 반환할 수 있습니다.
C++ 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기
어플리케이션의 파이어몽키 메인 폼은 폼 자신을 제외한 다른 컴포넌트 없이 빈 폼으로 시작합니다.
폼 디자이너에서 볼 수 있고 코드 에디터에서 텍스트 모드로도 볼 수 있습니다.
28
폼 디자이너에서 시각적 및 비-시각적 컴포넌트들을 어플리케이션에 추가할 수 있고 폼에 나타날
것입니다. 오브젝트 인스펙터를 사용하여 폼과 폼이 포함하고 있는 컴포넌트들을 사용자 지정합니다.
C++ 어플리케이션 메인 폼 – 유니트 소스 코드 및 헤더 파일
메인 폼과 관련된 파일은 unit1.cpp 소스 코드입니다.
//---------------------------------------------------------
#include <fmx.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.fmx"
TForm1 *Form1;
//---------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------
C++에서 컴파일 될 코드를 소스 코드 안에 넣습니다. 선언은 헤더 파일(.h)안에 배치합니다.
//---------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------
#include <System.Classes.hpp>
#include <FMX.Controls.hpp>
#include <FMX.Forms.hpp>
//---------------------------------------------------------
class TForm1 : public TForm
{
__published:// IDE-managed Components
private:// User declarations
public:// User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------
#endif
29
폼 사용하기
IDE에서 폼을 작성할 때, 델파이와 C++빌더는 어플리케이션의 메인 엔트리 포인트에서 코드를
포함하여 자동으로 폼을 메모리에 생성합니다. 일반적으로, 이것은 필요한 동작이고 변경할 필요가
없습니다. 즉, 메인 창은 프로그램의 실행 기간을 동안 지속되므로 메인 폼을 작성할 때 기본 동작을
변경하지 않을 것 입니다.
그러나 프로그램 실행 동안 프로그램의 모든 폼이 메모리에 있기를 원하지 않을 것 입니다. 즉,
어플리케이션의 폼이 한꺼번에 메모리에 할당돼 있기를 원하지 않는다면, 폼을 표시하고 싶을 때 폼을
동적으로 생성할 수 있습니다.
폼은 모달(modal) 또는 모드리스(modeless) 형식이어야 입니다. 모달 폼은 사용자가 다른 폼으로
전환하기 전에 닫혀야 하는 폼입니다(예를 들어, 사용자가 입력해야 하는 대화 상자). 모드리스 폼은
다른 창에 의해 가려질 때까지 또는 사용자가 닫거나 최소화할 때까지 표시되는 창입니다.
자동-생성 폼과 동적으로 폼을 생성하기 위해 어플리케이션 코드에서 완벽하게 제어 할 수 있습니다.
엠바카데로 DocWiki에서 폼 사용, 작성 및 제어에 대한 몇 개의 기사를 보실 수 있습니다:
 메모리에 있는 폼 제어하기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Controlling_When_Forms_Reside_in_Memory
 자동-생성 폼 띄우기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Displaying_an_Auto-created_Form
 폼 동적으로 생성하기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Creating_Forms_Dynamically
 모드리스 폼 작성하기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Creating_Modeless_Forms_Such_as_Windows
 로컬 변수를 사용하여 폼 인스턴스 생성 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Creating_a_Form_Instance_Using_a_Local_Variable
 폼에서 데이터 가져오기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Retrieving_Data_from_Forms
 모달 폼에서 데이터 가져오기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Retrieving_Data_from_Modal_Forms
 모드리스 폼에서 데이터 가져오기 -
http://docwiki.embarcadero.com/RADStudio/XE2/en/Retrieving_Data_from_Modeless_Forms
FMX.Forms.TForm
TForm은 표준 파이어몽키 어플리케이션 창(폼)을 나타냅니다. 설계 시점에 폼 디자이너에서 폼을
작성할 때, TForm의 후손으로 구현됩니다. 폼은 프로그램의 메인 창, 대화상자 또는 각종 설정 환경
관련 창들을 나타낼 수 있습니다. 폼은 TButton, TCheckBox, TComboBox 오브젝트과 같은 모든
파이어몽키 오브젝트 및 기타를 포함합니다.
30
델파이 및 C++ 예제 프로그램 중 하나 살펴보기 – ControlsDemo
프로그래밍 언어 및 파이어몽키를 사용하여 윈도우와 맥 어플리케이션 구축 방법에 대해 배우기 위한
좋은 방법은 샘플 프로젝트와 소스 코드를 보는 것 입니다.
다음에서 델파이와 C++용 “Controls Demo” 을 보실 수 있습니다.
 C:UsersPublicDocumentsRAD Studio9.0SamplesFireMonkeyControlsDemo
 C:UsersPublicDocumentsRAD Studio9.0SamplesCPPFireMonkeyControlsDemo
소스 코드를 직접 보시거나 4장 동영상 비디오를 볼 수 있습니다.
오브젝트 설계(UML 클래스 다이어그램을 사용하여)
프로그래밍 언어 및 파이어몽키를 사용하여 윈도우와 맥 어플리케이션을 구축 방법에 대해 배울 수
있는 또 다른 좋은 방법은 모델보기를 사용하여 프로그램에서 사용하는 클래스의 정의를 살펴보는
것입니다. 또한 모델보기를 사용하여 클래스를 작성하고 수정할 수 있습니다.
모델보기는 모델링 프로젝트의 논리적 구조와 계층 구조의 모델 트리를 보여줍니다. 모델보기를
열려면, View>Model View 메뉴 명령을 사용하거나 프로젝트 매니저 창 하단에 있는 '모델보기"탭을
클릭합니다. 처음으로 모델보기를 선택한 경우 다음과 같은 대화 상자가 표시됩니다:
“Yes”를 클릭하고 IDE는 모델 트리를 작성하기 위해 프로젝트 소스와 헤더 파일을 처리합니다. 소스
코드 중 아무것도 손상되지 않을 것입니다. 모델링 기술은 클래스에 대한 정보를 포함하는 XML
파일을 만듭니다. 모델 트리는 모델링 프로젝트의 모델의 논리적 표현을 제공 합니다. 모델 트리가
프로젝트에서 모델링 요소의 계층 구조를 보여줍니다: 루트 노드는 프로젝트 노드 이고 네임
스페이스(패키지) 및 다이어그램 노드가 다음에 오고, 다이어그램에 표시된 다른 모델링 요소의 노드
입니다. 모델보기 트리에서 노드를 더블 클릭하여 특정 클래스, 인터페이스, 또는 멤버의 코드
에디터를 엽니다. 참고: 네임 스페이스가 여러 소스 파일을 가질 수 있기 때문에 모델보기 트리에서
네임 스페이스 노드를 더블 클릭해도 특정 소스 코드 파일을 열 수 없습니다.
모델보기는 모델 트리 노드를 오른쪽 마우스 버튼 클릭하면 표시할 수 있는 컨텍스트 메뉴를
제공합니다.
31
컨텍스트 메뉴에서 사용할 수 있는 명령은 선택된 모델링 요소에 따라 달라집니다. 컨텍스트 메뉴를
사용하면 모델보기에서 모델에 직접 새로운 요소를 추가 할 수 있습니다. 컨텍스트 메뉴에서 제공하는
작업의 일부입니다.
 다이어그램보기(델파이, C + + 경우 C + + 클래스 익스플로러를 사용합니다)에서 UML
다이어그램 열기
 프로젝트에 새로운 UML 다이어그램(델파이) 추가(또는 삭제)
 UML 다이어그램(델파이)위에 모델링 요소 추가(또는 삭제)
 모델링 요소 복사, 자르기 및 붙여넣기
 하이퍼링크 작성
 제약조건 추가
 코드 에디터에서 선택된 모델링 요소의 선언으로 이동
 다이어그램 보기에서 해당 UML 다이어그램 위에서 모델보기에서 선택한 모델링 요소 찾기
 사용자 속성 추가.
 문서 생성
 그 외 작업
RAD Studio의 모델링은 코드 편집기와 다이어그램 보기에서 클래스를 변경할 수 있습니다(모델이 바로
소스 코드에 보이기 때문에, 모두 동기화해서 보관됩니다).
32
윈도우와 맥 플랫폼 특정 코드 처리
윈도우에서 특정 처리를 하고 맥에서는 다른 일을 해야 하는 코드를 처리하는 방법에는 여러 가지가
있습니다. 두 가지 일반적인 방법은 1) 조건부 컴파일(컴파일 시간)과 2) TOSVersion 기록을 사용하는
것입니다.
조건부 컴파일
조건부 컴파일은 상수의 존재와 평가, 컴파일러 전환 상태 및 조건 기호의 정의에 기초를 두고
있습니다. 조건부 기호는 불린 변수처럼 작동합니다: 그것들은 정의되거나(true) 또는 정의 되지
않습니다(false). 모든 유효한 조건부 기호는 정의 될 때까지 거짓(false)으로 간주됩니다.
델파이의 경우, {$DEFINE} 지시어는 지정된 기호를 true로 설정하고 {$UNDEF} 지시어는 false로
설정합니다. 또한 커맨드-라인 컴파일러와 함께 -D 스위치를 사용하거나 Project > Options > Delphi
Compiler 페이지에서 조건부 정의 기호 필드에 기호를 추가하여 조건부 기호를 정의 할 수
있습니다. 델파이의 조건부 지시어 {$IFDEF}, {$IFNDEF}, {$IF}, {$ELSEIF}, {$ELSE}, {$ENDIF}, 및 {$IFEND}는
조건부 기호의 상태에 따라 코드를 컴파일 하거나 표시하지 않게 할 수 있게 해줍니다. {$IF} 와
{$ELSEIF}는 선언된 델파이 식별자에서 조건부 컴파일을 기본으로 할 수 있도록 허용합니다. {$ IFOPT}는
지정된 컴파일러 스위치가 활성화되어 있는지 여부에 따라 컴파일 하거나 코드가 표시되지 않습니다.
델파이 미리 정의 된 조건들은 아래 엠바카데로 DocWiki에 나열되어 있습니다:
http://docwiki.embarcadero.com/RADStudio/XE2/en/Conditional_compilation_(Delphi)
C++의 경우, 컴파일러는 빈 줄과 해당 소스 코드 라인을 교체하여 조건부 컴파일을 지원합니다.
지시어의 결과로 무시되는 라인은 따라서 컴파일 할 수 없습니다. 모든 조건부 컴파일 지시어는 소스
에서 완료해야 하고 또는 시작되는 파일에 포함해야 합니다. C + +의 조건 지시어는 #if, #ifdef, #ifndef,
#elif, #else 및 # endif가 있습니다. #if 정의 식별자 표현 대신 #ifdef 와 #ifndef 지시어를 사용할 수
있습니다. 그러나, #if 정의 식별자 표현이 선호됩니다. # ifdef와 # ifndef 지시어는 언어의 이전
버전에서의 호환성만을 위해 제공됩니다. #ifdef 와 #ifndef 조건부 지시어는 식별자가 현재 정의되어
있는지 아닌지를 테스트하기 위해 사용합니다. 즉, 이전의 #define 명령어는 그 식별자에 대해
처리되었는지 강제로 그대로 있는지를 체크합니다. 엠바카데로 DocWiki에서 더 자세한 정보를 보실 수
있습니다. http://docwiki.embarcadero.com/RADStudio/en/If,_elif,_else,_And_endif
델파이와 C++ 파이어몽키 어플리케이션에서, 윈도우와 맥 용 조건 정의 변수 설정이 있습니다.
파이어몽키 델파이 소스 코드의 예입니다.
{$IFDEF MACOS}
or ((Button = TMouseButton.mbLeft)
and (Shift = [ssLeft, ssCtrl]))
{$ENDIF}
Syntax for C++ conditional compilation:
#if constant-expression-1
<section-1>
<#elif constant-expression-2 newline section-2>
33
.
.
.
<#elif constant-expression-n newline section-n>
<#else <newline> final-section>
#endif
TOSVersion
RAD 스튜디오는 또한 런타임 라이브러리의 System.SysUtils 유니트에 정의되어 있는 "TOSVersion"라는
런타임 구조를 정의합니다. TOSVersion는 운영 체제에 대한 정보, OS 버전 정보와 프로세서를
포함합니다. 런타임에 특정 플랫폼 코드를 실행하는 프로그램에서 TOSVersion를 사용할 수 있습니다:
 플랫폼(윈도우 또는 맥 OS X): pfWindows, pfMacOS
 구조(Intel x86 or Intel x64): arIntelX86, arIntelX64
엠바카데로 DocWiki에서 TOSVersion 정의에 대한 내용을 보실 수 있습니다.
http://docwiki.embarcadero.com/Libraries/XE2/en/System.SysUtils.TOSVersion
TOSVersion는 사용할 수 있는 두 개의 메소드를 가지고 있습니다:
 Check - 현재 운영 체제의 버전이 지정 값과 같은지 또는 그 이상인지를 반환합니다.
 ToString - TOSVersion의 문자열 설명을 반환합니다.
34
요약, 해야 할 일, 리소스
4장에서, 파이어몽키 어플리케이션의 소스코드와 프로젝트 안에 무엇이 있는지 살펴보았습니다. 개체
지향 프로그래밍, 클래스, 오브젝트 속성, 메소드, 이벤트 등을 검토 했습니다. 또한 기본 언어 문법의
일부와 에디터에서뿐만 아니라 모델보기에서 소스 코드를 읽는 방법을 살펴보았습니다. 델파이와 C++
프로그래밍 언어를 짧은 시간 안에 배우는 것은 불가능합니다. 다행히, 각 프로그래밍 언어를
활용하는데 도움을 주는 많은 자습서, 비디오, 도서 및 기사가 있습니다.
5장에서, 윈도우 및 맥 파이어몽키 HD 어플리케이션을 생성합니다, 사용자 인터페이스 (UI)와
컴포넌트들을 사용하여 훌륭한 모습의 어플리케이션을 구축 할 수 있습니다.
한편, 4장에서 배운 것을 발전시키고 5장을 준비하기 위해 몇 가지 해야 할 일, 읽어야 할 기사와
보아야 할 동영상이 있습니다.
해야 할일
 아래의 추가 리소스 링크를 사용하여 델파이와 C + + 언어에 대해 자세히 알아보십시오.
 자신의 델파이 또는 C + + 파이어몽키 프로젝트를 만듭니다. 프로젝트 마법사에서 생성 된
소스 코드를 살펴보십시오.
 RAD 스튜디오에 포함되어 있는 델파이와 C + + 프로젝트의 예제 일부를 로드하고
읽어보십시오. C:UsersPublicDocumentsRAD Studio9.0Samples 에서 보실 수 있습니다.
우리는 또한 소스 포지에서 최신 버전과 새로운 샘플을 가지고 있습니다.
http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE2/
추천 자료 – 책과 전자서적
다음 책 및 전자 서적(상용 및 무료)은 델파이 및 C + + 개발자를 위한 권장 도서입니다.
델파이
Bob Swart가 쓴 판매용 델파이 XE2 책과 전자서적: 이 책은 밥의 실제 경험을 통해 수백 페이지를
제공하며 학습하여 여러분의 시간과 노력을 줄여줍니다. 밥의 책은 PDF 형식과 출력하기 유용한
양식으로 Lulu.com 구입할 수 있습니다 -http://www.lulu.com/shop/search.ep?contributorId=300146).
 델파이 XE2 개발 기초(145 페이지)
http://www.drbob42.com/courseware/51.htm
 델파이 XE2 iOS 개발(150 페이지)
http://www.drbob42.com/courseware/56.htm
 델파이 XE2 DataSnap 개발(276 페이지)
http://www.drbob42.com/courseware/53.htm
 델파이 XE2 XML, SOAP 및 웹 서비스(152 페이지)
http://www.drbob42.com/courseware/52.htm
마르코 칸투의 델파이 핸드북: 마르코는 몇 년 동안 델파이에 대해 책을 작성했습니다. 마르코의 책의
대부분은 아마존에서 인쇄 양식과 PDF 형식으로 사용할 수 있습니다. 여기 마르코의 핸드북, 델파이
및 파스칼 기초 책과 전자 책의 목록입니다.
35
 델파이 XE 핸드북 - http://www.marcocantu.com/handbooks/#dxeh
 델파이 2010 핸드북 - http://www.marcocantu.com/dh2010
 델파이 2009 핸드북 - http://www.marcocantu.com/dh2009/
 델파이 2007 핸드북 - http://www.marcocantu.com/dh2007/
 델파이 핸드북 모음집 (두 번째 에디션) 전자-서적 PDF -
http://sites.fastspring.com/wintechitalia/product/delphihandbookscollection
 파스칼 기초 - http://www.marcocantu.com/epascal/default.htm
C++
 Thinking in C++ by Bruce Eckel (Second Edition), free eBooks Volume 1 (Bruce Eckel) and Volume
 2 (Bruce Eckel and Chuck Allison) -
http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html
 Thinking in C++ Solution Volume 1 Solution Guide ($12 USD, 전자 책만) -
http://www.mindview.net/Books/TICPP/Solutions/
참조 자료 링크
 시작하기 코스 방문 페이지 -
http://www.embarcadero.com/firemonkey/firemonkey-e-learning-series
 존 레이 토마스가 쓴 “ RAD IDE 에 곧 출시될 C++ - 64비트, C++11, ARM, iOS 및 안드로이드의
미래”
- http://edn.embarcadero.com/article/42275
델파이:
 엠바카데로 DocWiki – 델파이 참고자료 -
http://docwiki.embarcadero.com/RADStudio/en/Delphi_Reference
 델파이 기본 - http://www.delphibasics.co.uk/
 델파이 프로그래밍에 관하여 - http://delphi.about.com/
 델파이 초보자를 위한 가이드 - http://delphi.about.com/od/beginners/a/delphicourse.htm
 델파이 소개 - http://www.functionx.com/delphi/Lesson01.htm
C++:
 톰 앤더슨이 쓴 C++ 빠른 소개 (29 페이지)
http://www.cs.washington.edu/homes/tom/c++example/c++.pdf
 MIT 오픈 교육용: C++ 소개- http://ocw.mit.edu/courses/electrical-engineering-and-computer-
science/6-096-introduction-to-c-january-iap-2011/
 C++ 언어 자습서 - http://www.cplusplus.com/doc/tutorial/
 Bjarne Stroustrup – C++ 프로그래밍 언어 홈 페이지 -
http://www2.research.att.com/~bs/C++.html
 엠바카데로 DocWiki C++ 참고자료 -
http://docwiki.embarcadero.com/RADStudio/en/C%2B%2B_Reference
 C++빌더 자습서 및 VCL 주제 – 약간 오래되었지만 배우기 쉬운 -
http://www.functionx.com/bcb/index.htm
 C++ 빌더 실용 학습 시리즈 – 시간이 좀 지났지만 여전한 고전 자습서 -
http://www.yevol.com/en/bcb/
 C++빌더 개발자 저널 - http://bcbjournal.org/
36
 프로그래밍 추상화 – 스탠포드 교수이며 스탠포드 iTuneU 후계자인 Julie Zelenski가 쓴 -
“프로그래밍 방법론” 코스. C + + 프로그래밍 언어를 사용하여 재귀, 알고리즘 분석, 데이터
추상화와 같은 고급 프로그래밍 주제를 다룹니다-
http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384232917
이 장은 “우니도우와 맥 개발의 시작을 위한 파이어몽키 코스북”의 4장 내용 전체입니다. 코스북
전체를 PDF로 무료 다운로드 받을 수 있습니다. http://tech.devgear.co.kr/13556

Mais conteúdo relacionado

Semelhante a 프로그래밍 언어 기초(델파이,C++)

C Language II
C Language IIC Language II
C Language IISuho Kwon
 
델파이 기초 - 체크리스트
델파이 기초 - 체크리스트델파이 기초 - 체크리스트
델파이 기초 - 체크리스트Devgear
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322jylee6977
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개 SuHyun Jeon
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편Darion Kim
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것jaypi Ko
 
C#강좌
C#강좌C#강좌
C#강좌e12g
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용중선 곽
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드중선 곽
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론JeongDong Kim
 
안드로이드스터디 1
안드로이드스터디 1안드로이드스터디 1
안드로이드스터디 1jangpd007
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!Devgear
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿AnselmKim
 
ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)
ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)
ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)Devgear
 
센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012Daum DNA
 

Semelhante a 프로그래밍 언어 기초(델파이,C++) (20)

react-ko.pdf
react-ko.pdfreact-ko.pdf
react-ko.pdf
 
C Language II
C Language IIC Language II
C Language II
 
델파이 기초 - 체크리스트
델파이 기초 - 체크리스트델파이 기초 - 체크리스트
델파이 기초 - 체크리스트
 
[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322[KGIT_EWD]class03 0322
[KGIT_EWD]class03 0322
 
Java script
Java scriptJava script
Java script
 
LucideWorks Banana 소개
LucideWorks Banana 소개 LucideWorks Banana 소개
LucideWorks Banana 소개
 
주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편주니어 개발자도 이해 할 수 있는 Go - Scope 편
주니어 개발자도 이해 할 수 있는 Go - Scope 편
 
객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것객체지향 단어가 의미하는 것
객체지향 단어가 의미하는 것
 
C#강좌
C#강좌C#강좌
C#강좌
 
Java the good parts
Java the good partsJava the good parts
Java the good parts
 
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
프로그래밍 패러다임의 진화 및 Spring의 금융권 적용
 
Java rmi 개발 가이드
Java rmi 개발 가이드Java rmi 개발 가이드
Java rmi 개발 가이드
 
2015.07.01
2015.07.012015.07.01
2015.07.01
 
소프트웨어설계론
소프트웨어설계론소프트웨어설계론
소프트웨어설계론
 
안드로이드스터디 1
안드로이드스터디 1안드로이드스터디 1
안드로이드스터디 1
 
실전 DataSnap!
실전 DataSnap!실전 DataSnap!
실전 DataSnap!
 
[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿[스프링 스터디 1일차] 템플릿
[스프링 스터디 1일차] 템플릿
 
ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)
ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)
ER/Studio 데이터 모델링 솔루션으로 마이그레이션(from ERwin)
 
센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012센차 터치2 시작하기 | Devon 2012
센차 터치2 시작하기 | Devon 2012
 
Design patterns
Design patternsDesign patterns
Design patterns
 

Mais de Devgear

[델파이 Begin...End] 0장. 책 소개/저자 소개/목차
[델파이 Begin...End] 0장. 책 소개/저자 소개/목차[델파이 Begin...End] 0장. 책 소개/저자 소개/목차
[델파이 Begin...End] 0장. 책 소개/저자 소개/목차Devgear
 
RAD스튜디오를 활용한 장비 연동 시스템 구축방안
RAD스튜디오를 활용한 장비 연동 시스템 구축방안 RAD스튜디오를 활용한 장비 연동 시스템 구축방안
RAD스튜디오를 활용한 장비 연동 시스템 구축방안 Devgear
 
RAD스튜디오를 활용한 헬스 케어 시스템 구축방안
RAD스튜디오를 활용한 헬스 케어 시스템 구축방안 RAD스튜디오를 활용한 헬스 케어 시스템 구축방안
RAD스튜디오를 활용한 헬스 케어 시스템 구축방안 Devgear
 
RAD스튜디오 100% 활용하기
RAD스튜디오 100% 활용하기 RAD스튜디오 100% 활용하기
RAD스튜디오 100% 활용하기 Devgear
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장Devgear
 
델파이 @22
델파이 @22델파이 @22
델파이 @22Devgear
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD StudioDevgear
 
델파이 DB프로그래밍(멀티티어) - 체크리스트
델파이 DB프로그래밍(멀티티어) - 체크리스트델파이 DB프로그래밍(멀티티어) - 체크리스트
델파이 DB프로그래밍(멀티티어) - 체크리스트Devgear
 
델파이 DB프로그래밍(2티어) - 체크리스트
델파이 DB프로그래밍(2티어) - 체크리스트델파이 DB프로그래밍(2티어) - 체크리스트
델파이 DB프로그래밍(2티어) - 체크리스트Devgear
 
델파이 윈도우 애플리케이션 개발 - 체크리스트
델파이 윈도우 애플리케이션 개발 - 체크리스트델파이 윈도우 애플리케이션 개발 - 체크리스트
델파이 윈도우 애플리케이션 개발 - 체크리스트Devgear
 
델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트
델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트
델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트Devgear
 
RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄Devgear
 
ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드Devgear
 
델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)
델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)
델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)Devgear
 
델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)
델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)
델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)Devgear
 
델파이 무료 평가판 설치
델파이 무료 평가판 설치델파이 무료 평가판 설치
델파이 무료 평가판 설치Devgear
 
델파이 iOS앱 개발 환경 설정
델파이 iOS앱 개발 환경 설정델파이 iOS앱 개발 환경 설정
델파이 iOS앱 개발 환경 설정Devgear
 
델파이 안드로이드앱 개발 환경 설정
델파이 안드로이드앱 개발 환경 설정델파이 안드로이드앱 개발 환경 설정
델파이 안드로이드앱 개발 환경 설정Devgear
 
델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략Devgear
 
델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략Devgear
 

Mais de Devgear (20)

[델파이 Begin...End] 0장. 책 소개/저자 소개/목차
[델파이 Begin...End] 0장. 책 소개/저자 소개/목차[델파이 Begin...End] 0장. 책 소개/저자 소개/목차
[델파이 Begin...End] 0장. 책 소개/저자 소개/목차
 
RAD스튜디오를 활용한 장비 연동 시스템 구축방안
RAD스튜디오를 활용한 장비 연동 시스템 구축방안 RAD스튜디오를 활용한 장비 연동 시스템 구축방안
RAD스튜디오를 활용한 장비 연동 시스템 구축방안
 
RAD스튜디오를 활용한 헬스 케어 시스템 구축방안
RAD스튜디오를 활용한 헬스 케어 시스템 구축방안 RAD스튜디오를 활용한 헬스 케어 시스템 구축방안
RAD스튜디오를 활용한 헬스 케어 시스템 구축방안
 
RAD스튜디오 100% 활용하기
RAD스튜디오 100% 활용하기 RAD스튜디오 100% 활용하기
RAD스튜디오 100% 활용하기
 
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
RAD스튜디오 100% 활용하기 - 최신 기술 적용과 확장
 
델파이 @22
델파이 @22델파이 @22
델파이 @22
 
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
20170623 최신OS와 멀티플랫폼 개발 전략 with RAD Studio
 
델파이 DB프로그래밍(멀티티어) - 체크리스트
델파이 DB프로그래밍(멀티티어) - 체크리스트델파이 DB프로그래밍(멀티티어) - 체크리스트
델파이 DB프로그래밍(멀티티어) - 체크리스트
 
델파이 DB프로그래밍(2티어) - 체크리스트
델파이 DB프로그래밍(2티어) - 체크리스트델파이 DB프로그래밍(2티어) - 체크리스트
델파이 DB프로그래밍(2티어) - 체크리스트
 
델파이 윈도우 애플리케이션 개발 - 체크리스트
델파이 윈도우 애플리케이션 개발 - 체크리스트델파이 윈도우 애플리케이션 개발 - 체크리스트
델파이 윈도우 애플리케이션 개발 - 체크리스트
 
델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트
델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트
델파이로 한 번에 개발하는 안드로이드&iOS - 체크리스트
 
RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄RAD Studio 10.2 도쿄
RAD Studio 10.2 도쿄
 
ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드ELC(Embarcadero License Center) 서버 설치가이드
ELC(Embarcadero License Center) 서버 설치가이드
 
델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)
델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)
델파이로 개발한 iOS 앱 앱스토어 배포 방법(Apple App Store)
 
델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)
델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)
델파이로 개발한 안드로이드 앱 앱스토어 배포 방법(google play)
 
델파이 무료 평가판 설치
델파이 무료 평가판 설치델파이 무료 평가판 설치
델파이 무료 평가판 설치
 
델파이 iOS앱 개발 환경 설정
델파이 iOS앱 개발 환경 설정델파이 iOS앱 개발 환경 설정
델파이 iOS앱 개발 환경 설정
 
델파이 안드로이드앱 개발 환경 설정
델파이 안드로이드앱 개발 환경 설정델파이 안드로이드앱 개발 환경 설정
델파이 안드로이드앱 개발 환경 설정
 
델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 물류 시스템 개발 전문가를 위한 시장현황과 전략
 
델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략
델파이,C++빌더: 의료 시스템 개발 전문가를 위한 시장현황과 전략
 

프로그래밍 언어 기초(델파이,C++)

  • 1. 1 4장 – 프로그래밍 언어 기초 – 델파이와 C++ 4장 – 프로그래밍 언어 기초 – 델파이와 C++...................................................................................................1 소개............................................................................................................................................................................2 개체 지향 프로그래밍 (OOP).................................................................................................................................3 속성 .................................................................................................................................................................... 4 메소드 ................................................................................................................................................................ 5 이벤트 ................................................................................................................................................................ 5 언어 가이드 ..............................................................................................................................................................7 델파이 기본 항목 ............................................................................................................................................ 7 델파이 데이터 타입 ...................................................................................................................................... 11 델파이 프로시저와 함수 .............................................................................................................................. 14 델파이 연산자 ................................................................................................................................................ 15 파이어몽키 어플리케이션의 프로그램 구조 .......................................................................................................21 예제 “파이어몽키 HD 어플리케이션 – 델파이” 프로젝트 콘텐트 메인 프로그램 소스 코드 파일 – Project1.dpr.......................................................................................... 21 델파이 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기..................................................................... 22 예제 “파이어몽키 HD 어플리케이션 – C++빌더” 프로젝트 콘텐트 C++ 프로젝트 메인 소스 코드 – Project6.cpp .......................................................................................... 24 C++ 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기.......................................................................... 27 C++ 어플리케이션 메인 폼 – 유니트 소스 코드 및 헤더 파일.......................................................... 28 폼 사용하기 ............................................................................................................................................................29 델파이 및 C++ 예제 프로그램 중 하나 탐색하기 – ControlsDemo.............................................................30 오브젝트 설계(UML 클래스 다이어그램을 사용하여).......................................................................................30 윈도우와 맥 플랫폼 특정 코드 처리...................................................................................................................32 요약, 해야 할 일, 리소스......................................................................................................................................34
  • 2. 2 소개 "RAD Studio"의 C + +이나 델파이에서 파이어몽키 어플리케이션을 개발할 수 있는데, 둘 다 모두 전세계의 수백만 개발자들에 의해 사용되는 컴포넌트 기반의 개체 지향 프로그래밍 언어로 배우기 쉽습니다. 델파이는 우아하고 배우기 쉬운 개체지향 언어로서 오브젝트 파스칼을 기초로 되어 있으며, 읽기 쉬운 코드, 빠른 컴파일, 그리고 모듈 프로그래밍을 위한 여러 개의 유니트 파일들을 사용하는 등 많은 장점들을 포함합니다. 델파이는 RAD Studio 컴포넌트 프레임워크와 환경을 지원하는 특별한 기능들을 갖고 있습니다. 범용적으로 사용되는 개체지향언어인 C++ 에서도 파이어몽키 어플리케이션을 개발 할 수 있습니다. C++빌더의 RAD 환경에서 개발자가 유저 인터페이스를 시각적으로 디자인 할 수 있으며 데이터와 서비스에 연결 할 수 있습니다 단 코드는 ANSI/ISO 호환의 C 와 C++입니다. C++을 사용하여 신속한 개발 생산성을 갖습니다. 4장에서는 어떻게 델파이와 C ++ 프로그래밍 언어로 윈도우와 맥 용 어플리케이션을 작성 하도록 도와주는 파이어몽키 비즈니스 어플리케이션 플랫폼을 작업하는지에 대해서 살펴보겠습니다. 델파이와 C++의 현대적 기능을 다루는 도서, 온라인 자습서와 비디오 등이 많이 있기 때문에 전체 언어 사양에 대해서는 다루지 않겠습니다. 델파이와 C++ 언어 가이드는 엠바카데로 DocWiki 에서 보실 수 있습니다:  http://docwiki.embarcadero.com/RADStudio/XE2/en/Delphi_Language_Guide_Index  http://docwiki.embarcadero.com/RADStudio/XE2/en/C%2B%2B_Language_Guide_Index 이 장의 끝 부분에서 델파이와 C++ 언어 정보를 볼 수 있는 소스의 추가적인 링크를 알려드리도록 하겠습니다.
  • 3. 3 개체 지향 프로그래밍 (OOP) 개체-지향 프로그래밍은 코드의 재사용과 데이터의 캡슐화를 강조하는 구조적인 프로그래밍의 확장입니다. 여러분이 클래스를 정의 했을 경우 다른 개발자들도 다른 어플리케이션에서 이 클래스를 사용할 수 있기 때문에 개발 시간을 줄이고 생산성을 향상시킵니다. 클래스는 데이터를 캡슐화하고 동작하는 데이터 타입입니다. 개체 지향 프로그래밍 전에는, 데이터와 동작들 (함수들)이 분리된 요소로 취급되었습니다. 개체는 클래스의 인스턴스입니다. 즉 인스턴스 타입의 값이 클래스 입니다. 클래스와 클래스의 인스턴스 사이의 차이점이 크게 중요하지 않은 이 문서에서는 개체라는 용어는 명확하지 않게 자주 사용됩니다. "개체"라는 용어는 또한 클래스에 참조 할 수 있습니다. 파스칼의 레코드나 C의 구조체를 알고 있다면 오브젝트를 이해하기 용이합니다. 레코드는 데이터를 포함하는 필드들로 구성되어 있으며 필드들은 각각의 타입들로 구성됩니다. 레코드는 다양한 데이터 요소들을 집합을 참조하는 것이 용이합니다. 개체 또한 데이터 요소들의 집합입니다만 개체는 레코드나 구조체와 다르게, 자신의 데이터들을 동작하는 함수나 프로시저를 포함합니다. 이러한 프로시저나 함수들을 메소드라고 지칭합니다. 단일 유니트에서의 데이터 및 기능의 결합을 캡슐화라고 합니다. 캡슐화와 더불어 개체-지향 프로그래밍은 계승(inheritance)과 다형성(polymorphism)이라는 특징이 있습니다. 계승은 조상이라 불리는 다른 오브젝트로부터 기능을 파생하는 것을 의미합니다; 오브젝트들은 계승된 행위들을 오버라이드할 수 있습니다. 다형성은 같은 조상에서 파생된 다른 오브젝트들이 가끔 같은 메소드와 속성 인퍼페이스를 지원하는 것을 의미합니다. 개체-지향 프로그래밍에서의 다형성은 다른 오브젝트들이 각기 구현한 동일한 이름의 메소드를 사용가능 하도록 해 주는 방법입니다. 예를 들면, 오브젝트에 “speak”를 요청할 수 있습니다 그러나 조상의 구현 부분에 따라 “speak” 메소드는 사람은 말을 하고, 개는 짖고, 전신을 통해 모스코드를 보내고, 고래는 수중 소리를 방출하고 HTTP를 통해 JSON 패킷을 보냅니다. 영역(Scope)는 오브젝트의 필드, 속성과 메소드의 접근성을 결정합니다. 클래스 안의 선언된 모든 멤버들은 해당 클래스에서 사용할 수 있으며 그 하위 클래스에서 거의 사용할 수 있습니다. 비록 메소드의 구현 코드는 클래스 선언 외부에 나타나지만, 메소드는 클래스 선언부 안에 선언되어 있기 때문에 여전히 클래스의 영역 안에 있습니다.
  • 4. 4 오브젝트 오브젝트는 고정 또는 변수 값(또는 값의 설정)을 저장할 수 있는 메모리의 특정 지역입니다. (오브젝트라는 단어의 사용은 개체-지향 프로그래밍에서 사용되는 일반 적인 용어와는 다릅니다.) 각 값은 연관된 이름과 또한 데이터 타입으로 알려진 타입을 갖습니다. 이름은 오브젝트에 접근 하기 위해 사용됩니다. 이 이름은 단순한 식별자 일수도 있고 또는 오브젝트를 유일하게 참조할 수 있는 복잡한 표현식이 될 수도 있습니다. 타입은 이런 이유로 사용됩니다:  올바른 메모리 할당 요구를 결정하기 위해  후속 액세스하는 동안 개체에 있는 비트 패턴을 해석하기 위해  많은 타입의 검사 상황에서, 불법 할당을 방지하기 위해 선언은 식별자와 오브젝트 사이의 필요한 매핑을 설정합니다. 각각의 선언은 데이터 타입에 따른 식별자와 연결합니다. 정의 선언으로 알려진 대부분의 선언은 또한 개체의 생성(장소와 시간)을 설정합니다. 즉, 물리적 메모리와 가능한 초기화의 할당입니다. 참조 선언으로 알려진 선언은 단순히 컴파일러에게 자신의 식별자와 타입을 소개합니다. 같은 식별자에 많은 참조 선언이 있을 수 있으나, 특히 다중 파일 프로그램에서는 그 식별자에 대한 단 하나의 정의 선언만 허용됩니다. 일반적으로 말해서, 식별자는 소스 코드에 선언하기 전에 프로그램에서 사용할 수 없습니다. 이 규칙 (앞으로 참조라고도 함)에 대한 합법적 예외는 레이블, 선언하지 않은 함수 호출, 클래스, 구조체, 유니온 태그입니다. 속성, 메소드와 이벤트 파이어몽키용 컴포넌트에서, 클래스들은 속성, 메소드와 이벤트로 구성됩니다. 각 클래스들은 데이터 멤버 (속성), 데이터를 동작하는 함수(메소드)와 클래스의 사용자와 상호 작용하는 방법(이벤트)를 포함합니다. 속성 속성은 오브젝트의 시각적인 형태나 동작에 영향을 주는 특성입니다. 예를 들면, Visible 속성은 어플리케이션 인터페이스에서 오브젝트가 보일 것인지 아닌지를 결정합니다. 잘 설계된 속성들은 컴포넌트를 사용하고 유지 보수하기 쉽게 해줍니다. 다음은 속성들의 일부 유용한 특징들입니다:  실행 시에만 사용할 수 있는 메소드와 다르게, 일부 속성들은 설계 시점에 변경 할 수 있으며 IDE에서 컴포넌트가 변경될 때 즉시 피드백을 할 수 있습니다.  일부 속성들은 시각적으로 오브젝트의 값을 변경 할 수 있는 오브젝트 인스펙터에서 접근할 수 있습니다.  설계 시에 속성을 설정하는 것은 코드 작성하는 것보다 쉽고 코드를 유지 보수하기 쉽게 해줍니다.
  • 5. 5  데이터가캡슐화되어있기때문에속성의값을가져오고설정하는방법으로특별한처리는오브 젝트의사용자에게보이지않도록수행할수있습니다캡슐화부분이실제오브젝트의Private Protected입니다  속성에 액세스하는 동안 이벤트를 트리거 하거나 다른 데이터를 수정하는 로직을 구현할 수 있습니다. 예를 들어, 하나의 속성의 값을 변경하면 다른 속성의 값도 변경하기를 요구할 수도 있습니다. 속성을 위해 생성된 메소드를 변경 할 수 있습니다. 속성은 virtual이 될 수도 있습니다.  하나의 속성은 하나의 오브젝트에 제한되지 않습니다. 하나의 오브젝트에서 하나의 속성을 변경하는 것이 몇 몇의 오브젝트에 영향을 줄 수 있습니다. 예를 들면, 라디오 버튼의 Checked 속성을 True로 설정하면 그룹 안에 있는 모든 라디오 버튼에 반영됩니다. 메소드 메소드는 오브젝트의 행위를 지정합니다. 메소드는 클래스와 연관된 프로시저와 함수입니다. 메소드는 같은 클래스 안에 어떠한 가시성 영역이든 모든 멤버를 액세스 할 수 있습니다 클레스 선언 안에, 메소드는 프로시저와 함수 선언부가 나타납니다. 클래스가 선언된 후에 같은 모듈 안에, 각 메소드는 선언부 정의에 따라 구현되어야 합니다. 메소드의 구현 안에서, Self (델파이)식별자 또는 this (C++)는 어느 오브젝트에서 메소드가 호출되었는지 오브젝트를 참조합니다. 클래스에 선언된 메소드들은 아래 테이블에 표시되듯이 3가지 카테고리로 분류됩니다. 카테고리 델파이문법 C++ 문법 Self (델파이) 또는 this (C++) 의미 Regular N/A N/A 클래스 인스턴스 Static static static N/A Class class __classmethod 메타-클래스 인스턴스 이벤트 이벤트는 프로그램에 의해 인식되는 행동이나 사건입니다. 대부분의 현대 어플리케이션들은 이벤트에 대해 반응하도록 설계되어 있기 때문에 이벤트-유발 프로그램이라고 합니다. 프로그램에서 개발자는 사용자가 어떠한 작업을 수행할 것인지 예를 들어, 사용자가 메뉴 항목을 클릭할 지, 버튼을 클릭할 지 또는 일부 텍스트를 표시할지 등 예측할 수 있는 방법이 없습니다. 같은 제한된 순서에서 항상 실행하는 코드를 작성하는 것보다 특정 이벤트를 처리하기 위한 코드를 작성할 수 있습니다. 이벤트가 어떻게 트리거 되는 지와 상관없이, 파이어몽키 오브젝트는 해당 이벤트를 처리하기 위한 코드를 작성했다면 코드가 실행되고 그렇지 않으면, 디폴트 이벤트 핸들링 동작이 발생합니다.
  • 6. 6 Private, Protected, Public 및 Published 클래스 타입 선언은 필드와 메소드들의 접근성을 제어하는 세 부분 또는 네 부분을 포함합니다:  public 부분은 특별한 접근 제한이 없는 필드와 매소드를 선언합니다. 클래스 인스턴스와 하위 클래스들은 이 곳에 선언된 필드와 메소드들에 접근할 수 있습니다. public 멤버는 클래스를 소유하는 곳, 즉 클래스가 선언된 유니트와 해당 유니트를 사용하는 어떠한 유니트에서도 접근 가능합니다.  protected 부분은 일부 제한을 가진 필드와 메소드를 포함합니다. Protected 멤버는 클래스가 선언된 유니트 안에서와 하위 클래스의 유니트와 상관없이 하위 클래스에서만 접근 가능합니다,  private 부분은 엄격한 접근 제한이 있는 필드와 메소드를 선언합니다. Private 멤버는 선언된 유니트에서만 접근 가능합니다. Private 멤버는 클래스 안에서 public 또는 published 메소드들과 속성들을 구현하기 위해서 자주 사용됩니다.  TPersistent에서 파생된 클래스에서, published 부분에 설계 시점에 사용할 수 있는 속성과 메소드들을 선언합니다. Published 멤버는 public 멤버와 동일한 가시성을 가지지만 컴파일러는 설계 시에 오브젝트 인스펙터에 표시되는 Published 속성과 메소드를 위한 런타임 정보를 생성합니다. 속성, 메소드를 선언할 때 새로운 멤버는 이 네 부분 중 하나에 추가됩니다. 이 네 부분은 가시성을 표시하는: private, protected, public, published 부분입니다. 생성자(Constructor)와 파과자(Destructor) 생성자는 오브젝트 인스턴스를 생성해주고 초기처리 하는 특별한 메소드 입니다. 파괴자는 호출된 오브젝트를 파괴하고 메모리를 해제하는 메소드 입니다. 델파이 생성자와 파괴자에 대한 더 많은 정보는 엠바카데로 DocWiki 에서 보실 수 있습니다. http://docwiki.embarcadero.com/RADStudio/en/Methods#Constructors C++ 생성자와 파괴자의 더 많은 자료는 엠바카데로 DocWikit 에서 보실 수 있습니다. http://docwiki.embarcadero.com/RADStudio/en/Introduction_To_Constructors_And_Destructors
  • 7. 7 언어 가이드 이 섹션은 델파이의 구성 요소와, 데이터 타입, 문장, 함수, 프로시저 및 연산자에 대한 정보를 포함하는 간략한 개요를 제공합니다. 기본 항목 델파이에서 기본 항목은 식별자, 숫자, 문자, 레이블과 주석들을 포함합니다. 각각을 살펴 보도록 하겠습니다. 델파이 기본 항목 키워드(때로는 예약어라 불리는)를 포함한 델파이의 필수 언어 항목은 지시어, 식별자, 숫자, 문자열, 레이블, 주석과 컴파일러 지시어등 입니다. 키워드 다음과 같은 키워드(예약어)는 재정의 할 수 없으며 식별자로 사용할 수 없습니다: and, array, as, asm, begin, case, class, const, constructor, destructor, dispinterface, div, do, downto, else, end, except, exports, file, finalization, finally, for, function, goto, if, implementation, in, inherited, initialization, inline, interface, is, label, library, mod, nil, not, object, of, or, packed, procedure, program, property, raise, record, repeat, resourcestring, set, shl, shr, string, then, threadvar, to, try, type, unit, until, uses, var, while, with, xor 참고: 위 표에 추가적으로, 클래스 타입 선언부분에 예약어로 자동으로 생기지만 지시어로는 분류되지 않는 private, protected, public, published등이 있습니다 at 과 on 은 또한 특별한 의미를 가지고 있지만 예약어로 취급하지는 않습니다 object 키워드는 메소드 포인터를 선언하기 위해서 사용됩니다. 지시어 델파이는 여러 개의 지시어를 가지고 있습니다. 지시어란 소스 코드의 특정 위치에서 특별한 의미를 갖는 단어를 말합니다. 지시어 타입은 델파이에서 특별한 의미를 갖습니다만, 예약어와 다르게 사용자- 지정 식별자가 발생하지 않는 컨텍스트에서만 표시됩니다. 권장사항은 아니지만 – 지시어와 정확히 같은 형태의 식별자를 선언 할 수 있습니다. absolute, abstract, assembler, automated,
  • 8. 8 cdecl, contains (7), default, delayed (11), deprecated, dispid, dynamic, experimental, export, external, far (1) ,final, forward, helper (8), implements, index, inline (2), library (3), local (4), message, name, near (1), nodefault, operator (10), out, overload, override (7), package, pascal, platform, private, protected, public, published, read, readonly, reference (9), register, reintroduce, requires (7), resident (1), safecall,sealed (5), static, stdcall, strict, stored unsafe varargs, virtual winapi (6), write, writeonly 주의: 1. far, near과 resident는 폐기되었습니다. 2. inline 은 인라인 프로시저와 함수를 표시하기 위해 프로시저와 함수 선언 끝 부분에 지시어 스타일로 사용되지만 터보 파스칼에서는 예약어가 됩니다. 3. library 프로젝트 소스 코드에서 첫 토큰으로 사용되었을 때 또한 키워드입니다; 이것은 DLL 프로젝트라는 것을 알려줍니다. 그렇지 않으면, 사용 때 이 심볼을 표시하여 라이브러리임을 알려 줍니다. 4. local 은 카일릭스 지시어이고 델파이 윈도우32에서는 무시합니다. 5. Sealed는 클래스 지시어입니다: 'class sealed'. sealed 클래스는 더 이상 확장(C++에서 final과 같이) 또는 파생할 수 없습니다. 6. winapi는 델파이 Win32에서 stdcal와 동일합니다. 64-비트는 다릅니다. 7. Package는 첫 번째 토큰으로 사용하면 패키지를 나타내고 package 구문을 사용하도록 합니다. requires 와 contains는 패키지에서만 사용하는 지시어입니다. 8. Helper는 "class helper for”로 나타냅니다. 9. reference는 함수나 프로시저의 참조를 가리킵니다. 10. Operator는 클래스 연산자를 가리킵니다. 11. delayed 지시어는 라이브러리와 패키지에서 기술됩니다. 식별자 식별자는 상수, 변수, 필드, 타입, 속성, 프로시저, 함수, 프로그램, 유니트, 라이브러리와 패키지들을 표시합니다.  식별자는 255자를 넘지 않는 범위에서 사용할 수 있습니다. 식별자는 반드시 알파벳 문자로 시작해야 하며, 식별자 첫 문자는 유니코드 문자와 (_)와 스페이스는 포함할 수 없습니다.  첫 문자 후에는 영숫자 문자, 유니코드 문자, 숫자와 밑줄 등을 사용할 수 있습니다.  예약어는 식별자로 사용할 수 없습니다.  델파이 언어는 대소문자 구분을 하지 않기 때문에, CalculateValue와 같은 식별자는 사용할 수 있는 방법 중에 하나입니다.
  • 9. 9 숫자  정수와 실수 상수는 쉼표나 공백 없이 숫자의 연속으로 십진수 표기법으로 표현하고, 기호를 표시하기 위해 앞에 + 또는 - 연산자로 시작 할 수 있습니다. 기본 값은 양수이며(예를 들어, 67258은 +67258과 동일합니다)와 미리 정의 된 가장 큰 실수 또는 정수 타입의 범위 안에 있어야 합니다.  소수점 또는 지수가 있는 숫자는 실수를 나타내는 반면 다른 숫자는 정수를 나타냅니다.  실수 내에서 문자 E 또는 e가 나타나면 "열 배"을 의미합니다. 예를 들어, 7E2 는 7 * 10^2를 의미하고, 12.25e+6 와 12.25e6 둘 다 12.25 * 10^6를 의미 합니다.  예를 들어 접두어 달러-기호 $8F는 16 진수 숫자를 나타냅니다. 이전 없이 16 진수 – 단 항 연산자는 양수로 이동합니다. 할당하는 동안, 16 진수 값이 수신 타입의 범위 밖이라면 정수(32 비트 정수)의 경고 메시지가 나타나는 경우를 제외하고는 오류가 발생합니다. 이 경우, 정수의 양수 범위를 초과하는 값은 2의 보수 정수 표시와 일치하는 방식으로 음수로 이동합니다. 문자열  문자열은 또한 리터랄 문자열이나 문자열 상수라고도 부르며 인용 문자열, 제어 문자열, 인용 및 제어 문자열의 조합으로 구성되어 있습니다. 인용 기호(‘ ‘)를 사용하여 문자열을 표시합니다.  인용 문자열은 연속된 문자이며 ANSI 또는 멀티 바이트 문자 세트로, 한 줄에 작성하고 아포스트로피로 둘러쌉니다. 아포스트로피 사이에 아무것도 없는 인용 문자열은 널 문자열입니다. 인용 문자열의 두 개의 연속 아포스트로피는 단일 문자를 나타냅니다.  문자열은 UTF-16으로 인코딩 된 유니 코드 문자열로 내부적으로 표현됩니다. 기본 다국어 평면(Basic Multilingual Planel :BMP)의 문자는 2 바이트가 필요하고 BMP가 아닌 문자에서는 4 바이트가 필요합니다.  제어 문자열은 하나 이상의 연속된 제어 문자들로 각각의 문자는 0 ~ 65535 (십진수)까지 또는 UTF-16 인코딩 $ 0부터 $ FFFF (16 진수)까지 일정한 부호 없는 정수 다음에 # 기호로 구성되며 지정된 코드 값에 해당하는 문자를 나타냅니다. 각 정수는 문자열에서 2 바이트로 내부적으로 표현됩니다. 제어 문자와 멀티 바이트 문자를 표시하는데 매우 유용합니다. 레이블  레이블로 식별자 또는 양수를 사용할 수 있습니다. 델파이 컴파일러는 0부터 4294967295 (uint32 범위)까지 숫자 레이블을 허용합니다.  레이블은 goto 문에서 사용됩니다.
  • 10. 10 주석문과 컴파일러 지시어 구분 기호로 작동 할 때를 제외하고는 주석은 컴파일 되지 않습니다 또는 컴파일러 지시어. 주석을 작성하는 몇 가지 방법이 있습니다: {왼 쪽과 오른쪽 괄호 사이에 텍스트는 주석입니다. } (*왼쪽 괄호-더하기-*와 *-더하기-오른쪽 괄호 사이의 텍스트 역시 주석입니다 *) // 슬래시 두 개와 라인 끝 사이의 텍스트는 주석입니다. 주석은 중첩할 수가 없습니다. 예를 들어, (* {} *) 입니다. 이 형태도 주석을 포함하는 코드 섹션을 주석처리 하는데 매우 유용합니다. 주석 문자의 세 가지 유형을 사용하는 방법과 시기에 대한 몇 가지 권장 사항입니다:  개발하는 동안 만든 임시 변경 사항에 대한 주석은 이중 슬래시 (/ /)를 사용합니다.  작업하는 동안 빠르게 더블 슬래시 문자를 삽입하기 위해 코드 편집기의 편리한 CTRL + / (슬래시) 방법을 사용할 수 있습니다.  개발 주석 및 다른 주석을 포함한 코드 블록 주석 모두에 괄호 "(* ... *)"을 사용합니다  이 주석 문자는 주석의 다른 유형을 포함하여 소스의 여러 행을 허용하며, 컴파일러에 의해 제거 할 수 있습니다.  코드를 유지하기 위한 소스 문서에는 괄호({})를 사용합니다 {또는 (* 를 입력 한 후에 달러 기호 ($)를 포함한 주석은 컴파일러 지시어 입니다. 예를 들어, {$WARNINGS OFF}는 컴파일러가 경고 메시지를 생성하지 않는 것을 알려줍니다. 컴파일러 지시어의 전체 목록은 엠바카데로 DocWiki에서 찾을 수 있습니다. http://docwiki.embarcadero.com/RADStudio/XE2/en/Delphi_Compiler_Directives_(List)_Index
  • 11. 11 데이터 타입 델파이 데이터 타입 델파이 데이터 타입은 정수 데이터 타입, 실수 데이터 타입, 문자열과 문자 데이터 타입, 필드 데이터 타입, 불린 데이터 타입과 다른 데이터 타입의 컬렉션이 포함되어 있습니다. 정수 데이터 타입  Byte: 8-비트 부호 없는 정수  ShortInt: 8-비트 부호 있는 정수  Word: 16- 비트 부호 없는 정수  SmallInt: 16- 비트 부호 있는 정수  Cardinal: 32- 비트 부호 없는 정수  LongWord: 32- 비트 부호 없는 정수  Integer: 32- 비트 부호 있는 정수  LongInt: 32- 비트 부호 있는 정수  UInt64: 64- 비트 부호 없는 정수  Int64: 64- 비트 부호 있는 정수  NativeInt: 64-비트 또는 32-비트 플랫폼에 따라 달라지는 부호가 없는 정수
  • 12. 12 문장 델파이와 C++에서의 문장은 할당과 복합문이 있으며 if 와 case (델파이)와 switch (C++)등을 포함한 조건문이 있습니다. for (델파이와 C++), repeat (델파이), while(델파이와 C++) 와 do while (C++) 문장들을 포함한 반복문이 있습니다. 이 부분은 각 각 두 언어의 문장 타입들을 다루게 될 것입니다. 델파이 문장 할당 문장: 변수를 할당하거나 다른 변수에 식을 할당합니다. variable := variable or expression 복합문: 몇 개의 문장을 블록에 포함하여 사용합니다. begin <statement(s)> End If 문: 하나 이상의 문장의 조건 테스트 및 실행. if <logical expression> then <statement or compound statement> if <local expression> then <statement or compound statement> else <statement or compound statement> Case 문: 표현식의 값들과 각 값들에 대한 실행 문장들을 나열합니다. 때론 case 문이 중첩된 if/then/else 문보다 읽고 따라가기가 더 쉽습니다. case expression of caselist1: <statement or compound statement> … caselistn: <statement or compound statement> else <statement or compound statement> end For 문: 값 또는 컬렉션 또는 열거 형의 범위에 기초하여 문장들을 반복합니다. for <counter> := <initial value> to <final value> do <statement or compound statement> for <counter> := <initial value> downto <final value> do <statement or compound statement> for <element> in <some collection or enumeration> do <statement or compound statement> Repeat 문: 끝에서 논리 테스트를 하면서 루프를 반복합니다. repeat <statement of block of statements> until <logical expression>
  • 13. 13 While 문: 처음에 논리 테스트를 하는 반복 루프. while <logical expression> do <statement or compound statement> GoTo 문: (일부 컴퓨터 공학자에 의한 구조화 프로그래밍에서는 안 좋음) goto <label> Try 와 Raise 문: 예외를 걸러내고, 예외를 발생 시킵니다. try <statement(s)> except <exception handling statements> end try <statements> finally <statements> end raise <exception>
  • 14. 14 함수와 프로시저 델파이와 C++ 모두 제사용 가능한 루틴 작성을 지원합니다. 델파이 프로시저와 함수 루틴이라 불리는 프로시저와 함수는 프로그램의 다른 위치에서 호출되는 독립적인 문장 블록입니다. 함수는 실행할 때 반환 값이 있는 루틴입니다. 프로시저는 반환 값이 없는 루틴입니다. 함수 호출 시, 결과 값을 반환하기 때문에, 할당 문에서 표현식으로 사용될 수 있습니다. 프로시저와 함수를 선언 할 때, 루틴의 이름, 매개변수의 유형과 수, 그리고 함수인 경우는 반환 값의 유형들을 지정합니다; 선언의 이 부분은 가끔 헤딩, 또는 헤더 프로토타입라고 합니다. 그리고 프로시저와 함수가 호출될 때 실행하는 코드의 블록을 작성합니다; 이 부분을 루틴의 바디 또는 루틴의 블록이라고 부릅니다. 델파이 프로시저와 함수의 더 자세한 내용은 엠바카데로 DocWiki에서 보실 수 있습니다. http://docwiki.embarcadero.com/RADStudio/en/Procedures_and_Functions 프로시저 선언 델파이 프로시저 선언 형식입니다: procedure procedureName(parameterList); directives; localDeclarations; begin statements end; procedureName(프로시저이름)은 유효한 식별자이고, statements(문)은 프로시저가 호출 될 때 실행하는 문장의 순서입니다, 그리고 parameterList(매개변수 목록), directives(지시어), localDeclarations(로컬 선언)는 선택 사항입니다. 프로시저의 구문 블록 안에서, 프로시저 로컬 선언 부분에 선언된 다른 식별자와 변수를 사용할 수 있습니다; 매개변수 목록은 로컬 변수 세트를 정의하므로 로컬 선언 부분에 매개변수 이름을 다시 선언하지 않습니다. 결과적으로, 모든 프로시저 선언 안의 모든 식별자를 사용할 수 있습니다. 함수 선언 함수 선언은 반환 유형과 값을 지정하는 것을 제외하고는 프로시저 선언과 동일합니다. 함수 선언 형식은 다음과 같습니다: function functionName(parameterList):returnType;directives; local Declarations; begin statements end; functionName(함수 이름)은 유효한 식별자이고, returnType (반환값)은 반환값 타입이며, statements(문)은 함수가 호출 될 때 실행하는 문장의 순서입니다. parameterList (매개변수
  • 15. 15 목록), directives (지시어), local Declarations (로컬 선언)은 선택 사항입니다.. 함수의 구문 블록은 프로시저에 적용하는 동일한 규칙으로 적용됩니다. 구문 블록 안에서, 함수 로컬 선언 부분에 선언된 다른 식별자와 변수, 매개변수 목록에서 매개 변수 이름 및 함수 선언 안의 모든 식별자들을 사용할 수 있습니다. 또한, 미리 정의된 변수 Result 처럼 함수 이름 자체가 반환 값을 갖는 특별한 변수 역할을 합니다. 구문 블록 안에서, 선언된 반환 타입과 일치하는 값을 할당하는 한, 함수 이름이나 Result에 값을 할당할 수 있습니다. 함수의 실행이 종료될 때 Result 또는 함수의 이름에 할당 된 값이 무엇이든 함수의 반환 값이 됩니다. 함수가 Result 또는 함수 이름에 값을 할당하지 않고 종료하면, 함수의 반환 값은 정의 되지 않습니다. 연산자 두 언어는 이진 산술, 논리 연산, 관계 연산자 및 포인터 연산자를 포함합니다. 델파이는 또한 집합 및 문자열 연산자를 포함하고 있습니다. 델파이 연산자 이진 산술 연산자 연산자 연산 피연산자 타입 결과 값 유형 예제 + 더하기 정수, 실수 정수, 실수 X+Y - 빼기 정수, 실수 정수, 실수 Result -1 * 곱하기 정수, 실수 정수, 실수 P * InterestRate / 나누기 실수, 실수 실수 X/2 Div 나누기 정수, 실수 정수 Total div UnitSize Mod 나머지 정수 정수 Y mod 6 단항 산술 연산자 연산자 연산 피연산자 타입 결과 값 유형 예제 + sign identity Integer, realinteger real +7 - sign negation Integer, realinteger real -X 다음과 같은 규칙이 산술 연산자에 적용됩니다: x와 y의 타입에 관계없이, X / Y 유형은 확장(Extended) 타입입니다. 다른 산술 연산자의 경우, 적어도 하나의 피 연산자가 real인 경우 결과는 Extended(확장) 타입이며, 그렇지 않으면 하나 이상의 피 연산자가 Int64인 경우 결과는 Int64 타입이며, 그렇지 않으면 결과 유형은 integer 입니다. 피연산자의 유형이 integer의 하위 범위라면, integer 타입으로 간주합니다. x div y 의 값은 x / y 의 0에서 가장 가까운 정수로 반올림 된 값입니다.
  • 16. 16 mod 연산자는 피연산자를 나누어 얻은 나머지를 반환합니다. 즉, x mod y = x - (x div y) * y. x / y, x div y, 또는 x mod y 등의 표현 식에서 y가 제로인 경우 실행 시에 오류가 발생합니다. 불린 연산자 불린 연산자는 not, and, or, 및 XOR는 모든 불린 유형의 피연산자를 취하고 불린 타입의 값을 반환합니다. 연산자 연산 피연산자 타입 결과 값 유형 예제 Not 부정 Boolean Boolean not And 연결 Boolean Boolean Done and (Total >0) Or 분리 Boolean Boolean A or B xor 배타적 분리 Boolean Boolean A xor B 논리(비트) 연산자 다음 논리 연산자는 정수 피연산자에 비트 조작을 수행합니다. 예를 들어, X (바이너리로)에 저장된 값이 001101이고 Y에 저장된 값이 100001이라면, 문: Z := X or Y; Z에 101101 값을 할당합니다. 연산자 연산 피연산자 타입 결과 값 유형 예제 Not bitwise 부정 integer integer not X And bitwise and integer integer X and Y Or bitwise or integer integer X or Y xor bitwise xor integer integer X xor Y shl bitwise shift left integer integer X shl 2 Shr bitwise shift left integer integer Y shr I 비트 연산자에 다음 규칙이 적용됩니다:  not 연산의 결과는 피연산자와 같은 유형입니다.  and, or, 또는 xor 연산의 피연산자가 모두 정수라면, 결과는 두 가지 유형의 가능한 모든 값을 포함하는 가장 작은 범위 미리 정의 된 정수 타입입니다.  x shl y 와 x shr y 는 x의 값을 왼쪽으로 또는 y 비트의 오른쪽으로 이동하는데 x by 2^y로 곱하거나 나누기와 같습니다(x가 부호가 없는 정수인 경우); 결과는 x와 같은 타입입니다. 예를 들어, N이 01101 값 (10진수 13)을 저장하고 N sh 1 은 11010 (10진수 26)을 반환합니다. y의 값은 x의 타입의 모듈로(MODULO) 크기로 해석된다는 것을 참고하십시오. 따라서 예를 들면, x가 정수이면 정수 32 비트이고 40 mod 32 는 8 이기 때문에, x shl 40는 x shl 8 로 해석됩니다. 문자열 연산자 연산자 연산 피연산자 타입 결과 값 유형 예제 + 문자 연결 패킹된 문자 문자열 S + '.' 다음 규칙은 문자 연결에 적용됩니다:
  • 17. 17  + 에 대한 피연산자는 문자열, 패킷 문자열 (문자 타입의 패킷 배열), 또는 문자가 될 수 있습니다.  그러나, 피연산자 하나가 WideChar 유형이라면, 다른 피연산자는 반드시 long string(UnicodeString, AnsiString 또는 WideString)이어야 합니다.  + 연산의 결과는 모든 문자열 유형과 호환됩니다. 그러나, 피연산자 모두가 short strings 또는 characters 이고 결합된 길이가 255 보다 큰 경우라면, 결과는 첫 번째 255 문자까지 잘립니다. 포인터 연산자 관계형 연산자 <, >, <=, 및> = 은 PAnsiChar과 PWideChar (관계형 연산자를 참조)유형의 피연산자를 취할 수 있습니다. 다음 연산자는 또한 피연산자로 포인터를 사용할 수 있습니다. 포인터에 대한 더 자세한 정보는, 데이터 타입, 변수, 및 상수에서 포인터와 포인터 타입을 보십시오. 연산자 연산 피연산자 타입 결과 타입 예제 + 포인터 더하기 문자 포인터, 정수 문자 포인터 P+I - 포인터 빼기 문자 포인터, 정수 문자 포인터, 정수 P-Q ^ 포인터 역참조 포인터 포인터 기본 타입 P^ = 등식 포인터 불린 P=Q <> 부등식 포인터 불린 P <> Q ^ 연산은 역 참조 포인터입니다. ^연산의 피연산자는 일반 포인터를 제외하고 모든 유형의 포인터가 될 수 있고 역참조 전에 타입캐스트 되어야 합니다. P 와 Q가 같은 주소를 포인트 하는 경우에만 P = Q 는 참(True)입니다; 그렇지 않다면, P <> Q 는 참(True)입니다. + 와 - 연산자는 문자 포인터의 오프셋을 증가하고 감소할 수 있습니다. 또한 두 문자 포인터의 오프셋 사이의 차이를 계산하기 위해 – 연산자를 사용할 수 있습니다. 다음은 적용되는 규칙입니다:  I 는 정수이고 P는 문자 포인터라면, P + I는 P에 주어진 주소에 I를 더합니다; 즉 P 뒤에 I 문자 주소에 대한 포인터를 반환합니다. (I + P 표현식은 P + I와 동일합니다.)  P – I는 P에 주어진 주소에서 I를 뺍니다; 즉 P 전에 I 문자 주소에 대한 포인터를 반환합니다. PAnsiChar 포인터에서는 true입니다; PWideChar 포인터 경우 P + I는 SizeOf(WideChar)를 P에 더합니다.  P 와 Q 모두 문자 포인터라면, P - Q 는 P (더 높은 주소)에 주어진 주소와 Q (더 낮은 주소)에 주어진 주소 사이의 차이를 계산합니다; 즉, P와 Q 사이에 문자의 수를 나타내는 정수를 반환합니다. P + Q는 정의 되어 있지 않습니다.
  • 18. 18 집합 연산자 다음 연산자는 피연산자로 집합을 사용합니다. 연산자 연산 피연산자 타입 결과 타입 예제 + 합집합 set set Set1 + Set2 - 차집합 set set S - T * 교집합 set set S * T <= 작거나 같다 set Boolean Q <= MySet >= 크거나 같다 set Boolean S1 >= S2 = 같다 set Boolean S2 = MySet <> 같지 않다 set Boolean MySet <> S1 in 멤버에 속한다 ordinal, set Boolean A in Set1 다음 규칙은 +, -, 와 *에 적용됩니다:  O는 X 또는 Y (또는 둘 다)에 속하는 경우에만 순서를 나타내는 O는 X + Y에 속합니다. O 가 X에는 속하지만 Y에는 속하지 않는 경우에만 O는 X – Y에 속합니다. O가 X 와 Y에 모두 속하는 경우에만 O 는 X * Y에 속합니다.  결과 집합에서 A는 가장 작은 서수 값이고 B 는 가장 큰 값인 곳에서 a +, -, or * 연산의 결과는 A..B의 집합 유형입니다.  다음 규칙은 <=, >=, =, <>, 및 in에 적용됩니다:  X의 각 멤버가 Y의 멤버인 경우에만 X <= Y는 참(True)입니다; Z >= W는 W <= Z와 같습니다.  U 와 V 가 정확히 같은 멤버를 가지고 있는 경우에만 U= V 는 참(True)입니다; 그렇지 않으면, U <> V 는 참입니다. 순서를 나타내는 있는 O 와 집합 S인 경우, O가 S의 멤버인 경우에만 O in S 는 참(True)입니다. 관계 연산자 관계 연산자는 두 피연산자를 비교하기 위해 사용됩니다. 연산자 =, <>, <=, 및 >= 또한 집합에 적용됩니다. 연산자/연산/피연산자 유형/결과 유형/예  = 같다 클래스, 클래스 참조, 인터페이스, 문자열, 패킹 문자열 Boolean I = Max  <> 같지 않다 클래스 참조, 인터페이스, 문자열, 패킹 문자열 Boolean X <> Y  < 작다 문자열, 패킹 문자열 PCharBoolean X<Y  > 크다 문자열, 패킹 문자열 PCharBoolean Len > 0  <= 작거나 같음 문자열, 패킹 문자열 PCharBoolean Cnt <= I  >= 크거나 같음 문자열, 패킹 문자열 PCharBoolean I
  • 19. 19 >= 1 가장 단순한 유형에 대한, 비교는 간단합니다. 예를 들면, I = J 는 I 와 J 가 같은 값을 갖는 경우에만 참(True)이고 같은 값이 아닌 경우는 I <> J 는 참(True)입니다. 다음 규칙을 관계 연산자에 적용합니다:  피연산자는 실수와 정수를 비교할 수 있다는 점을 제외하고, 호환 형식 이어야 합니다.  문자열은 문자열을 구성하는 문자를 구성하는 순서 값에 따라 비교됩니다. 문자 타입은 길이가 1인 문자열로 간주합니다.  두 패킷 문자열은 비교될 컴포넌트의 같은 수를 가지고 있어야 합니다. N 컴포넌트의 패킷 문자열이 문자열로 비교할 때 패킷 문자열은 길이 n의 문자열로 처리됩니다.  두 개의 포인터가 같은 문자 배열 안을 포인트 한다면 PAnsiChar (와 PWideChar) 피 연산자 만을 비교하기 위해 연산자 <, >, <=, 및 >=를 사용합니다.  연산자 = 와 <> 는 클래스와 클래스-참조 유형을 피연산자로 사용할 수 있습니다. 클래스 타입의 피연산자를 사용하여, = 와 <> 는 포인터에 적용되는 규칙에 따라 평가됩니다. 클래스 C 와 D 가 같은 오브젝트 인스턴스를 포인트 하는 경우에만: C = D 는 참(True)입니다, 그렇지 않으면 C <> D 는 참(True) 입니다. 클래스-참조 타입의 피연산자를 사용하면, C 와 D가 같은 클래스를 표시하는 경우에만 C = D는 참(True)입니다, 그렇지 않으면 C <> D 는 참(True)입니다. 클래스 안에 저장된 데이터는 비교하지 않습니다. 클래스에 대한 더 자세한 내용은 “클래스와 오브젝트”를 보십시오. @ 연산자 @ 연산자는 변수의 주소 또는 함수, 프로시저, 및 메소드의 주소를 반환합니다; 즉, @는 피연산자에 대한 포인터를 생성합니다. 포인터에 대한 자세한 내용은 데이터 타입, 변수 및 상수에서 "포인터와 포인터 타입"을 참조하십시오. 다음 규칙들은 @에 적용됩니다:  X가 변수 인 경우 @ X는 X의 주소를 반환합니다. (X가 프로시저 변수 인 경우 특별한 규칙이 적용됩니다, 데이터 타입, 변수 및 상수에서 "구문과 표현식에서 프로시저 타입"을 참조하십시오). 기본 {$ T} 컴파일러 지시자가 유효한 경우라면 @ X의 유형은 포인터입니다. {$T+} 문장에서, T는 X 타입인 곳에서 @X는 ^T 유형입니다(이 차이는, 할당의 호환성을 위해 중요합니다, 할당 호환성을 참조하십시오).  F가 루틴이라면(함수 또는 프로시저), @F는 F의 엔트리 포인트를 반환합니다. @F의 타입은 항상 포인터입니다.  @가 클래스에 정의 된 메소드에 적용될 때, 메소드 식별자는 클래스 이름으로 접근해야 합니다. 예를 들면, @TMyClass.DoSomething 는 TMyClass 클래스의 DoSomething 메소드를 포인트 합니다.  클래스와 메소드에 대한 자세한 정보는 클래스와 개체를 참조하십시오.  참고: @연산자를 사용하는 경우, 주소를 컴파일 시점에 알 수 없고 런타임에 추출 할 수 없기 때문에 인터페이스 메소드의 주소를 구할 수 없습니다. 연산자 우선순위 복합 표현식에서 우선 순위 규칙은 연산이 수행되는 순서를 결정합니다.
  • 20. 20 연산자 우선 순위 @, not 첫 번째(가장 높은 순위) *,/,div,mod,and,shl,shr,as 두 번째 +,-,or,xor 세 번째 =,<>,<,>,<=,>=,in,is 네 번째(가장 낮은 순위)
  • 21. 21 파이어몽키 어플리케이션의 프로그램 구조 File > New 메뉴에서 “FireMonkey HD Application – Delphi”, “FireMonkey 3D Application – Delphi”, “FireMonkey HD Application – C++Builder” 또는 “FireMonkey 3D Application –C++Builder”를 클릭하여 파이어몽키를 사용한 새로운 윈도우와 맥 어플리케이션을 작성합니다. 선택을 한 후, 델파이 또는 C++ 프로젝트 파일(.dpr 또는 .cpp), 메인 폼 파일(.fmx)와 소스 코드 유니트(델파이의 .pas와 C++의 .cpp) 그리고 헤더 파일(C++ 프로젝트의 경우 .h)등이 생성됩니다. 예제 “파이어몽키 HD 어플리케이션 – 델파이” 프로젝트 콘텐트 시작 프로젝트를 선택한 후 아래 프로젝트 매니저 보기에서 내용을 찾을 수 있습니다. 메인 프로그램 소스 코드 – Project1.dpr 메인 프로그램 소스 파일은 다음 구문들을 포함합니다(프로젝트 매니저의 Project1.exe 노드에서 오른쪽 마우스 클릭하여 컨텍스트 메뉴에서 “View Source”를 선택하거나 또는 Project1.exe 노드가 선택되었을 때 Control-V를 누른다): program Project1; uses FMX.Forms, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
  • 22. 22 예약어 “program”은 여러분의 어플리케이션이 프로그램임을 표시합니다.“uses” 절은 프로그램을 컴파일 하기 위해 필요한 따로따로 컴파일 할 수 있는 모든 유니트의 목록들을 포함합니다(잠시 후에 유니트에 대한 자세한 내용을 다루겠습니다). “{$R *.res}” 컴파일러 지시어는 델파이 컴파일러가 모든 어플리케이션에서 필요한 리소스 파일(비트맵, 아이콘, 커서, 기타 등등)들을 포함하도록 합니다. “begin” 와 “end.” 구문 사이에 프로그램을 시작했을 때 실행되는 문장들을 정의합니다. 파이어몽키 어플리케이션 안에 메인 폼에 대한 “Application.CreateForm” 문이 하나는 있다는 것에 주목하십시오(어플리케이션에 여러 개의 폼이 있다면 하나 이상이 있을 수 있습니다). Application.Run 문은 어플리케이션을 시작하고 어플리케이션을 닫을 때(또는 종료)까지 실행의 나머지 부분을 남겨두고 폼과 모든 이벤트 핸들러를 제어합니다. 델파이 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기 파이어몽키 어플리케이션의 메인 폼은 폼 자신을 제외한 다른 컴포넌트 없이 빈 폼으로 시작합니다. 폼 디자이너에서 볼 수 있고 코드 에디터에서 텍스트 모드로도 볼 수 있습니다.
  • 23. 23 델파이 어플리케이션 메인 폼 – 유니트 소스 코드 어플리케이션 메인 폼과 연관된 파일은 unit1.pas 소스 코드 파일입니다. unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs; type TForm1 = class(TForm) private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} end. 예약어 unit는 따로 컴파일 되는 메인 폼의 소스 코드의 시작을 정의합니다(메인 프로그램 소스 코드와 별도로). 델파이 유니트는 Interface 섹션과 Implementation 섹션: 두 개의 메인 섹션으로 나눕니다. Interface 섹션은 유니트에 대한 모든 타입, 상수 및 변수 선언을 포함합니다. Implementation 섹션은 함수, 프로시저, 메소드 및 이벤트 핸들러 어플리케이션 로직을 포함합니다. Unit1의 Interface 섹션은 유니트를 컴파일 하기 위해 필요한 모든 파이어몽키 및 런-타임 라이브러리 유니트의 목록을 포함하는 uses 절을 포함합니다. Interface 섹션은 또한 TForm 부모 클래스로부터 계승 받은 TForm1 클래스 선언을 포함합니다. 델파이 클래스는 private, public 및 protected 섹션을 가지고 있습니다. 폼 디자이너에서 또는 코드 에디터에서 컴포넌트를 추가하는 경우, 컴포넌트의 선언은 TForm1 클래스에 추가될 것입니다. Interface 안에 var 섹션은 폼 변수 Form1을 포함하는 모든 전역 변수를 선언합니다. 어플리케이션 로직에서 필요에 따라 이 섹션에 다른 전역 변수를 정의합니다. 처음에 시작 프로젝트를 작성할 때 Implementation 섹션은 어플리케이션 실행에 이 유니트에 대한 파이어몽키 폼 파일을 링크 할 수 있게 컴파일러에게 알려주는 {$ R *. fmx} 지시어만 포함합니다. “end.” 문은 컴파일러에게 유니트의 끝이라는 것을 알려줍니다. 컴포넌트의 이벤트 핸들러를 폼에 추가할 때, 이벤트 메소드가 Interface 섹션의 TForm1 클래스 선언 안에 나타나는 것을 보실 수 있습니다. 메소드 구현의 기본 골격 또한 Implementation 섹션에 표시됩니다.
  • 24. 24 예제 “파이어몽키 HD 어플리케이션 – C++빌더” 프로젝트 콘텐트 C++ 프로젝트 메인 소스 코드 – Project6.cpp 메인 프로그램 소스는 다음 구문들을 포함합니다(프로젝트 매니저의 Project6.exe 노드에서 오른쪽 마우스 클릭하여 컴텍스트 메뉴에서 “View Source”를 선택하거나 또는 Project6.exe 노드가 선택되었을 때 Control-V를 누른다): //--------------------------------------------------------- #include <fmx.h> #pragma hdrstop #include <tchar.h> //--------------------------------------------------------- USEFORM("Unit1.cpp", Form1); //--------------------------------------------------------- extern "C" int FMXmain() { try { Application->Initialize(); Application->MainFormOnTaskBar = true; Application->CreateForm(__classid(TForm1), &Form1); Application->Run(); } catch (Exception &exception) { Application->ShowException(&exception); } catch (...) { try { throw Exception("");
  • 25. 25 } catch (Exception &exception) { Application->ShowException(&exception); } } return 0; } //--------------------------------------------------------- 메인 프로그램 소스 코드에서 다음 라인들을 보실 수 있습니다: #include “#include <fmx.h>”는 컴파일러에 코드를 컴파일 하기 위해 필요한 파이어몽키 헤더 파일 선언을 가져오라고 알려줍니다. C 와 C++ 헤더 파일들은 보통 구현 코드에서 사용되는 타입, 클래스, 상수 밑 다른 아이템들의 선언을 포함합니다. #include <header_name> #include "header_name" #include <macro_definition> #include 지시어는 이름이 주어진 다른 파일들을(파일로 알려진, 헤더 파일 또는 헤더) 소스 코드 안으로 끌어 옵니다. 이 문법은 세 가지 버전이 있습니다:  첫 번째와 두 번째 버전은 매크로 확장이 시도되지 않는다는 것을 의미합니다; 다시 말해서, header_name 은 매크로 식별자로 절대 검사되지 않습니다. header_name은 확장자(헤더 파일에 대해 전통적으로. H) 및 옵션 경로 이름과 경로 구분 기호가 있는 유효한 파일 이름이어야 합니다.  세 번째 버전은 #include 다음에 “<”첫 번째 공백이 아닌 문자로 표시한다면, 그것은 <header_name> 또는 " header_name "형식 중 하나로 유효한 구분 헤더 이름으로 매크로 식별자를 확장하는 매크로 정의가 있다고 가정합니다. 선행 처리기가 #include 라인을 제거하고 개념적으로 소스 코드의 그 지점에서 include 파일의 전체 텍스트로 대치합니다. 소스 코드 자체는 변경되지 않습니다, 그러나 컴파일러는 확대 텍스트를 봅니다. #include 위치에 따라 포함된 파일 안의 모든 식별자의 범위와 기간에 영향을 줄 수 있습니다. 헤더_이름 안에 명시적 경로를 배치하는 경우라면, 디렉터리도 검색됩니다. <header_name> 와 "header_name" 형식간의 차이점은 include 파일을 찾기 위해 채택하는 검색 알고리즘에 있습니다: 인용 형식 - "header_name" 버전은 사용자-제공하는 include 파일을 지정합니다; 파일들은 다음 순서로 검색됩니다:  #include 문을 포함하는 파일과 같은 디렉터리.  그 파일을 포함하는(#include) 파일들의 디렉터리들.  현재 디렉터리.  Include 파일 검색 경로(-I) 옵션에 따라 지정된 경로.
  • 26. 26 <>-괄호 형식 - <header_name> 버전은 기본 include 파일을 지정합니다. 검색이 include 파일 검색 경로(- I) 옵션에 의해 정의 된 순서대로 include 디렉터리에서 각각의 연속으로 이루어집니다. 파일이 디폴트 모든 디렉터리에 없다면, 오류 메시지가 발생합니다. #pragma # pragma를 사용하여 또한 # pragma를 지원하는 다른 컴파일러를 방해하지 않고, 소스 코드에서 컴파일러 지시어를 설정할 수 있습니다. 컴파일러가 지시어-이름을 인식하지 못한다면 오류 또는 경고 메시지 없이 # pragma 지시어를 무시합니다. "# pragma hdrstop의"라인은 “미리 컴파일 되는 헤더"를 만드는 것 중지하라고 컴파일러에게 알려줍니다. 미리 컴파일 되는 헤더 작성 및 사용은 두 가지 주요 가지 작업을 수행합니다. C++ 파일의 컴파일 시간을 줄일 수 있습니다 컴파일 처리 해야 하는 코드 라인 수를 줄일 수 있습니다(일부의 경우, 크기의 여려 명령에 의해) 엠바카데로 DocWiki에서 미리 컴파일 된 헤더에 관한 더 자세한 내용을 보실 수 있습니다. http://docwiki.embarcadero.com/RADStudio/en/Precompiled_Headers_Overview USEFORM("Unit1.cpp", Form1) USEFORM는 폼 이름("Form1에")와 폼과 관련된 소스 코드 유니트("Unit1.cpp")를 나열하는 C + + 매크로입니다. extern "C" int FMXmain() extern "C"는 C + + 프로그램에서 엉망이 되는 프로그램의 함수 이름을 방지하는 데 사용됩니다. 이 라인은 반환 유형이 "int" 또는 integer인 파이어몽키 메인 프로그램 함수의 이름을 정의합니다. try, throw, catch C++ 예외 처리는 3개의 키워드를 사용해야 합니다: try, throw, 및 catch. 키워드 throw 는 예외를 생성하는데 사용됩니다. try 블록은 예외를 발생하는 구문을 포함하고 하나 이상의 catch 문이 따라옵니다. 각 catch 문은 특정 예외를 처리합니다. try 블록은 예외를 처리하고자 하는 하나의 문 또는 구문들을 포함합니다. 프로그램은 throw 문을 실행하여 예외를 발생합니다. throw 문은 일반적으로 함수 안에서 발생합니다. try 블록은 catch에 위해 지정된 핸들러에 의해 즉시 따라 오는 try에 의해 지정됩니다. try 블록은 프로그램이 실행하는 것처럼 제어의 흐름을 지정하는 구문입니다. 예외가 try 블록에서 발생되는 경우, 프로그램 제어는 적절한 예외 처리 핸들러로 전환됩니다. 핸들러는 예외를 처리 할 수 있도록 설계된 코드 블록입니다. C++ 언어는 try 블록 후 바로 하나 이상의 핸들러가 필요합니다. 프로그램은 프로그램이 생성 할 수 있는 각 예외에 대한 핸들러를 포함해야 합니다. throw 문은 다양한 유형의 오브젝트를 발생시킬 수 있습니다. C + + 개체는 일반적으로 값, 참조, 또는 포인터에 의해 발생 될 수 있습니다. 추가적으로, throw 문은 정수 또는 포인터와 같은 원시 타입을 throw 할 수 있습니다.
  • 27. 27 catch 문은 몇 가지 형식이 있습니다. 개체는 값, 참조, 또는 포인터에 의해 체크 할 수 있습니다. 또한, const 수식은 catch 매개변수에 사용할 수 있습니다. 블록이 여러 가지 다른 종류의 예외를 잡을 수 있도록, 단일 try 블록에 대한 여러 catch 문들이 있을 수 있으며, 발생할 수 있는 각 예외에 대한 catch 문이 있어야 합니다. 단일 try 문에 대한 여러 개의 catch 문을 사용하여, 각 유형 예외에 대한 핸들러를 가질 수 있습니다. 예외 개체가 어떤 기본 클래스에서 파생했다면, 일부 파생된 예외에 대한 특화된 핸들러를 추가 할뿐만 아니라, 기본 클래스에 대한 일반적인 처리 핸들러를 포함 할 수 있습니다. 예외가 발생했을 때 이를 검색하고 싶은 순서대로 캐치 문을 배치하여 이 작업을 수행합니다. try 블록을 수행하면서 발생하는 모든 예외를 잡기 위한 핸들러를 원한다면, catch (...) 특별한 형식을 사용하십시오. 이를 모든 예외를 위해 호출 되야 하는 예외 처리 시스템이라고 합니다. Application-> 어플리케이션 개체를 사용하는 메인 프로그램에서 여러 라인을 보실 수 있는데 어플리케이션을 초기화하기 위한, 메인 폼을(메인 프로그램에서 여러 개의 폼을 가질 수 있거나 또는 코드에서 즉시 폼을 만들 수 있습니다)생성하기 위한, 어플리케이션을 "실행"하기 위한 어플리케이션의 메소드를 호출합니다. 파이어몽키는 일부 사용자 이벤트(File |Exit 메뉴 항목과 같은)로 프로그램을 종료할 때까지 또는 런타임 예외가 발생할 때까지 계속 실행합니다. return 0 return 문은 메인 프로그램(또는 현재 함수)에서 다시 호출 루틴(이 경우, 다시 운영 체제) 으로 빠져나가는데 사용되는데 선택적으로 값을 반환합니다. 제로 값은 프로그램의 성공적인 종료를 나타냅니다. 다른 값을 반환할 수 있습니다. C++ 어플리케이션 메인 폼 – 폼 보기와 텍스트 보기 어플리케이션의 파이어몽키 메인 폼은 폼 자신을 제외한 다른 컴포넌트 없이 빈 폼으로 시작합니다. 폼 디자이너에서 볼 수 있고 코드 에디터에서 텍스트 모드로도 볼 수 있습니다.
  • 28. 28 폼 디자이너에서 시각적 및 비-시각적 컴포넌트들을 어플리케이션에 추가할 수 있고 폼에 나타날 것입니다. 오브젝트 인스펙터를 사용하여 폼과 폼이 포함하고 있는 컴포넌트들을 사용자 지정합니다. C++ 어플리케이션 메인 폼 – 유니트 소스 코드 및 헤더 파일 메인 폼과 관련된 파일은 unit1.cpp 소스 코드입니다. //--------------------------------------------------------- #include <fmx.h> #pragma hdrstop #include "Unit1.h" //--------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.fmx" TForm1 *Form1; //--------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------- C++에서 컴파일 될 코드를 소스 코드 안에 넣습니다. 선언은 헤더 파일(.h)안에 배치합니다. //--------------------------------------------------------- #ifndef Unit1H #define Unit1H //--------------------------------------------------------- #include <System.Classes.hpp> #include <FMX.Controls.hpp> #include <FMX.Forms.hpp> //--------------------------------------------------------- class TForm1 : public TForm { __published:// IDE-managed Components private:// User declarations public:// User declarations __fastcall TForm1(TComponent* Owner); }; //--------------------------------------------------------- extern PACKAGE TForm1 *Form1; //--------------------------------------------------------- #endif
  • 29. 29 폼 사용하기 IDE에서 폼을 작성할 때, 델파이와 C++빌더는 어플리케이션의 메인 엔트리 포인트에서 코드를 포함하여 자동으로 폼을 메모리에 생성합니다. 일반적으로, 이것은 필요한 동작이고 변경할 필요가 없습니다. 즉, 메인 창은 프로그램의 실행 기간을 동안 지속되므로 메인 폼을 작성할 때 기본 동작을 변경하지 않을 것 입니다. 그러나 프로그램 실행 동안 프로그램의 모든 폼이 메모리에 있기를 원하지 않을 것 입니다. 즉, 어플리케이션의 폼이 한꺼번에 메모리에 할당돼 있기를 원하지 않는다면, 폼을 표시하고 싶을 때 폼을 동적으로 생성할 수 있습니다. 폼은 모달(modal) 또는 모드리스(modeless) 형식이어야 입니다. 모달 폼은 사용자가 다른 폼으로 전환하기 전에 닫혀야 하는 폼입니다(예를 들어, 사용자가 입력해야 하는 대화 상자). 모드리스 폼은 다른 창에 의해 가려질 때까지 또는 사용자가 닫거나 최소화할 때까지 표시되는 창입니다. 자동-생성 폼과 동적으로 폼을 생성하기 위해 어플리케이션 코드에서 완벽하게 제어 할 수 있습니다. 엠바카데로 DocWiki에서 폼 사용, 작성 및 제어에 대한 몇 개의 기사를 보실 수 있습니다:  메모리에 있는 폼 제어하기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Controlling_When_Forms_Reside_in_Memory  자동-생성 폼 띄우기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Displaying_an_Auto-created_Form  폼 동적으로 생성하기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Creating_Forms_Dynamically  모드리스 폼 작성하기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Creating_Modeless_Forms_Such_as_Windows  로컬 변수를 사용하여 폼 인스턴스 생성 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Creating_a_Form_Instance_Using_a_Local_Variable  폼에서 데이터 가져오기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Retrieving_Data_from_Forms  모달 폼에서 데이터 가져오기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Retrieving_Data_from_Modal_Forms  모드리스 폼에서 데이터 가져오기 - http://docwiki.embarcadero.com/RADStudio/XE2/en/Retrieving_Data_from_Modeless_Forms FMX.Forms.TForm TForm은 표준 파이어몽키 어플리케이션 창(폼)을 나타냅니다. 설계 시점에 폼 디자이너에서 폼을 작성할 때, TForm의 후손으로 구현됩니다. 폼은 프로그램의 메인 창, 대화상자 또는 각종 설정 환경 관련 창들을 나타낼 수 있습니다. 폼은 TButton, TCheckBox, TComboBox 오브젝트과 같은 모든 파이어몽키 오브젝트 및 기타를 포함합니다.
  • 30. 30 델파이 및 C++ 예제 프로그램 중 하나 살펴보기 – ControlsDemo 프로그래밍 언어 및 파이어몽키를 사용하여 윈도우와 맥 어플리케이션 구축 방법에 대해 배우기 위한 좋은 방법은 샘플 프로젝트와 소스 코드를 보는 것 입니다. 다음에서 델파이와 C++용 “Controls Demo” 을 보실 수 있습니다.  C:UsersPublicDocumentsRAD Studio9.0SamplesFireMonkeyControlsDemo  C:UsersPublicDocumentsRAD Studio9.0SamplesCPPFireMonkeyControlsDemo 소스 코드를 직접 보시거나 4장 동영상 비디오를 볼 수 있습니다. 오브젝트 설계(UML 클래스 다이어그램을 사용하여) 프로그래밍 언어 및 파이어몽키를 사용하여 윈도우와 맥 어플리케이션을 구축 방법에 대해 배울 수 있는 또 다른 좋은 방법은 모델보기를 사용하여 프로그램에서 사용하는 클래스의 정의를 살펴보는 것입니다. 또한 모델보기를 사용하여 클래스를 작성하고 수정할 수 있습니다. 모델보기는 모델링 프로젝트의 논리적 구조와 계층 구조의 모델 트리를 보여줍니다. 모델보기를 열려면, View>Model View 메뉴 명령을 사용하거나 프로젝트 매니저 창 하단에 있는 '모델보기"탭을 클릭합니다. 처음으로 모델보기를 선택한 경우 다음과 같은 대화 상자가 표시됩니다: “Yes”를 클릭하고 IDE는 모델 트리를 작성하기 위해 프로젝트 소스와 헤더 파일을 처리합니다. 소스 코드 중 아무것도 손상되지 않을 것입니다. 모델링 기술은 클래스에 대한 정보를 포함하는 XML 파일을 만듭니다. 모델 트리는 모델링 프로젝트의 모델의 논리적 표현을 제공 합니다. 모델 트리가 프로젝트에서 모델링 요소의 계층 구조를 보여줍니다: 루트 노드는 프로젝트 노드 이고 네임 스페이스(패키지) 및 다이어그램 노드가 다음에 오고, 다이어그램에 표시된 다른 모델링 요소의 노드 입니다. 모델보기 트리에서 노드를 더블 클릭하여 특정 클래스, 인터페이스, 또는 멤버의 코드 에디터를 엽니다. 참고: 네임 스페이스가 여러 소스 파일을 가질 수 있기 때문에 모델보기 트리에서 네임 스페이스 노드를 더블 클릭해도 특정 소스 코드 파일을 열 수 없습니다. 모델보기는 모델 트리 노드를 오른쪽 마우스 버튼 클릭하면 표시할 수 있는 컨텍스트 메뉴를 제공합니다.
  • 31. 31 컨텍스트 메뉴에서 사용할 수 있는 명령은 선택된 모델링 요소에 따라 달라집니다. 컨텍스트 메뉴를 사용하면 모델보기에서 모델에 직접 새로운 요소를 추가 할 수 있습니다. 컨텍스트 메뉴에서 제공하는 작업의 일부입니다.  다이어그램보기(델파이, C + + 경우 C + + 클래스 익스플로러를 사용합니다)에서 UML 다이어그램 열기  프로젝트에 새로운 UML 다이어그램(델파이) 추가(또는 삭제)  UML 다이어그램(델파이)위에 모델링 요소 추가(또는 삭제)  모델링 요소 복사, 자르기 및 붙여넣기  하이퍼링크 작성  제약조건 추가  코드 에디터에서 선택된 모델링 요소의 선언으로 이동  다이어그램 보기에서 해당 UML 다이어그램 위에서 모델보기에서 선택한 모델링 요소 찾기  사용자 속성 추가.  문서 생성  그 외 작업 RAD Studio의 모델링은 코드 편집기와 다이어그램 보기에서 클래스를 변경할 수 있습니다(모델이 바로 소스 코드에 보이기 때문에, 모두 동기화해서 보관됩니다).
  • 32. 32 윈도우와 맥 플랫폼 특정 코드 처리 윈도우에서 특정 처리를 하고 맥에서는 다른 일을 해야 하는 코드를 처리하는 방법에는 여러 가지가 있습니다. 두 가지 일반적인 방법은 1) 조건부 컴파일(컴파일 시간)과 2) TOSVersion 기록을 사용하는 것입니다. 조건부 컴파일 조건부 컴파일은 상수의 존재와 평가, 컴파일러 전환 상태 및 조건 기호의 정의에 기초를 두고 있습니다. 조건부 기호는 불린 변수처럼 작동합니다: 그것들은 정의되거나(true) 또는 정의 되지 않습니다(false). 모든 유효한 조건부 기호는 정의 될 때까지 거짓(false)으로 간주됩니다. 델파이의 경우, {$DEFINE} 지시어는 지정된 기호를 true로 설정하고 {$UNDEF} 지시어는 false로 설정합니다. 또한 커맨드-라인 컴파일러와 함께 -D 스위치를 사용하거나 Project > Options > Delphi Compiler 페이지에서 조건부 정의 기호 필드에 기호를 추가하여 조건부 기호를 정의 할 수 있습니다. 델파이의 조건부 지시어 {$IFDEF}, {$IFNDEF}, {$IF}, {$ELSEIF}, {$ELSE}, {$ENDIF}, 및 {$IFEND}는 조건부 기호의 상태에 따라 코드를 컴파일 하거나 표시하지 않게 할 수 있게 해줍니다. {$IF} 와 {$ELSEIF}는 선언된 델파이 식별자에서 조건부 컴파일을 기본으로 할 수 있도록 허용합니다. {$ IFOPT}는 지정된 컴파일러 스위치가 활성화되어 있는지 여부에 따라 컴파일 하거나 코드가 표시되지 않습니다. 델파이 미리 정의 된 조건들은 아래 엠바카데로 DocWiki에 나열되어 있습니다: http://docwiki.embarcadero.com/RADStudio/XE2/en/Conditional_compilation_(Delphi) C++의 경우, 컴파일러는 빈 줄과 해당 소스 코드 라인을 교체하여 조건부 컴파일을 지원합니다. 지시어의 결과로 무시되는 라인은 따라서 컴파일 할 수 없습니다. 모든 조건부 컴파일 지시어는 소스 에서 완료해야 하고 또는 시작되는 파일에 포함해야 합니다. C + +의 조건 지시어는 #if, #ifdef, #ifndef, #elif, #else 및 # endif가 있습니다. #if 정의 식별자 표현 대신 #ifdef 와 #ifndef 지시어를 사용할 수 있습니다. 그러나, #if 정의 식별자 표현이 선호됩니다. # ifdef와 # ifndef 지시어는 언어의 이전 버전에서의 호환성만을 위해 제공됩니다. #ifdef 와 #ifndef 조건부 지시어는 식별자가 현재 정의되어 있는지 아닌지를 테스트하기 위해 사용합니다. 즉, 이전의 #define 명령어는 그 식별자에 대해 처리되었는지 강제로 그대로 있는지를 체크합니다. 엠바카데로 DocWiki에서 더 자세한 정보를 보실 수 있습니다. http://docwiki.embarcadero.com/RADStudio/en/If,_elif,_else,_And_endif 델파이와 C++ 파이어몽키 어플리케이션에서, 윈도우와 맥 용 조건 정의 변수 설정이 있습니다. 파이어몽키 델파이 소스 코드의 예입니다. {$IFDEF MACOS} or ((Button = TMouseButton.mbLeft) and (Shift = [ssLeft, ssCtrl])) {$ENDIF} Syntax for C++ conditional compilation: #if constant-expression-1 <section-1> <#elif constant-expression-2 newline section-2>
  • 33. 33 . . . <#elif constant-expression-n newline section-n> <#else <newline> final-section> #endif TOSVersion RAD 스튜디오는 또한 런타임 라이브러리의 System.SysUtils 유니트에 정의되어 있는 "TOSVersion"라는 런타임 구조를 정의합니다. TOSVersion는 운영 체제에 대한 정보, OS 버전 정보와 프로세서를 포함합니다. 런타임에 특정 플랫폼 코드를 실행하는 프로그램에서 TOSVersion를 사용할 수 있습니다:  플랫폼(윈도우 또는 맥 OS X): pfWindows, pfMacOS  구조(Intel x86 or Intel x64): arIntelX86, arIntelX64 엠바카데로 DocWiki에서 TOSVersion 정의에 대한 내용을 보실 수 있습니다. http://docwiki.embarcadero.com/Libraries/XE2/en/System.SysUtils.TOSVersion TOSVersion는 사용할 수 있는 두 개의 메소드를 가지고 있습니다:  Check - 현재 운영 체제의 버전이 지정 값과 같은지 또는 그 이상인지를 반환합니다.  ToString - TOSVersion의 문자열 설명을 반환합니다.
  • 34. 34 요약, 해야 할 일, 리소스 4장에서, 파이어몽키 어플리케이션의 소스코드와 프로젝트 안에 무엇이 있는지 살펴보았습니다. 개체 지향 프로그래밍, 클래스, 오브젝트 속성, 메소드, 이벤트 등을 검토 했습니다. 또한 기본 언어 문법의 일부와 에디터에서뿐만 아니라 모델보기에서 소스 코드를 읽는 방법을 살펴보았습니다. 델파이와 C++ 프로그래밍 언어를 짧은 시간 안에 배우는 것은 불가능합니다. 다행히, 각 프로그래밍 언어를 활용하는데 도움을 주는 많은 자습서, 비디오, 도서 및 기사가 있습니다. 5장에서, 윈도우 및 맥 파이어몽키 HD 어플리케이션을 생성합니다, 사용자 인터페이스 (UI)와 컴포넌트들을 사용하여 훌륭한 모습의 어플리케이션을 구축 할 수 있습니다. 한편, 4장에서 배운 것을 발전시키고 5장을 준비하기 위해 몇 가지 해야 할 일, 읽어야 할 기사와 보아야 할 동영상이 있습니다. 해야 할일  아래의 추가 리소스 링크를 사용하여 델파이와 C + + 언어에 대해 자세히 알아보십시오.  자신의 델파이 또는 C + + 파이어몽키 프로젝트를 만듭니다. 프로젝트 마법사에서 생성 된 소스 코드를 살펴보십시오.  RAD 스튜디오에 포함되어 있는 델파이와 C + + 프로젝트의 예제 일부를 로드하고 읽어보십시오. C:UsersPublicDocumentsRAD Studio9.0Samples 에서 보실 수 있습니다. 우리는 또한 소스 포지에서 최신 버전과 새로운 샘플을 가지고 있습니다. http://radstudiodemos.svn.sourceforge.net/viewvc/radstudiodemos/branches/RadStudio_XE2/ 추천 자료 – 책과 전자서적 다음 책 및 전자 서적(상용 및 무료)은 델파이 및 C + + 개발자를 위한 권장 도서입니다. 델파이 Bob Swart가 쓴 판매용 델파이 XE2 책과 전자서적: 이 책은 밥의 실제 경험을 통해 수백 페이지를 제공하며 학습하여 여러분의 시간과 노력을 줄여줍니다. 밥의 책은 PDF 형식과 출력하기 유용한 양식으로 Lulu.com 구입할 수 있습니다 -http://www.lulu.com/shop/search.ep?contributorId=300146).  델파이 XE2 개발 기초(145 페이지) http://www.drbob42.com/courseware/51.htm  델파이 XE2 iOS 개발(150 페이지) http://www.drbob42.com/courseware/56.htm  델파이 XE2 DataSnap 개발(276 페이지) http://www.drbob42.com/courseware/53.htm  델파이 XE2 XML, SOAP 및 웹 서비스(152 페이지) http://www.drbob42.com/courseware/52.htm 마르코 칸투의 델파이 핸드북: 마르코는 몇 년 동안 델파이에 대해 책을 작성했습니다. 마르코의 책의 대부분은 아마존에서 인쇄 양식과 PDF 형식으로 사용할 수 있습니다. 여기 마르코의 핸드북, 델파이 및 파스칼 기초 책과 전자 책의 목록입니다.
  • 35. 35  델파이 XE 핸드북 - http://www.marcocantu.com/handbooks/#dxeh  델파이 2010 핸드북 - http://www.marcocantu.com/dh2010  델파이 2009 핸드북 - http://www.marcocantu.com/dh2009/  델파이 2007 핸드북 - http://www.marcocantu.com/dh2007/  델파이 핸드북 모음집 (두 번째 에디션) 전자-서적 PDF - http://sites.fastspring.com/wintechitalia/product/delphihandbookscollection  파스칼 기초 - http://www.marcocantu.com/epascal/default.htm C++  Thinking in C++ by Bruce Eckel (Second Edition), free eBooks Volume 1 (Bruce Eckel) and Volume  2 (Bruce Eckel and Chuck Allison) - http://www.mindview.net/Books/TICPP/ThinkingInCPP2e.html  Thinking in C++ Solution Volume 1 Solution Guide ($12 USD, 전자 책만) - http://www.mindview.net/Books/TICPP/Solutions/ 참조 자료 링크  시작하기 코스 방문 페이지 - http://www.embarcadero.com/firemonkey/firemonkey-e-learning-series  존 레이 토마스가 쓴 “ RAD IDE 에 곧 출시될 C++ - 64비트, C++11, ARM, iOS 및 안드로이드의 미래” - http://edn.embarcadero.com/article/42275 델파이:  엠바카데로 DocWiki – 델파이 참고자료 - http://docwiki.embarcadero.com/RADStudio/en/Delphi_Reference  델파이 기본 - http://www.delphibasics.co.uk/  델파이 프로그래밍에 관하여 - http://delphi.about.com/  델파이 초보자를 위한 가이드 - http://delphi.about.com/od/beginners/a/delphicourse.htm  델파이 소개 - http://www.functionx.com/delphi/Lesson01.htm C++:  톰 앤더슨이 쓴 C++ 빠른 소개 (29 페이지) http://www.cs.washington.edu/homes/tom/c++example/c++.pdf  MIT 오픈 교육용: C++ 소개- http://ocw.mit.edu/courses/electrical-engineering-and-computer- science/6-096-introduction-to-c-january-iap-2011/  C++ 언어 자습서 - http://www.cplusplus.com/doc/tutorial/  Bjarne Stroustrup – C++ 프로그래밍 언어 홈 페이지 - http://www2.research.att.com/~bs/C++.html  엠바카데로 DocWiki C++ 참고자료 - http://docwiki.embarcadero.com/RADStudio/en/C%2B%2B_Reference  C++빌더 자습서 및 VCL 주제 – 약간 오래되었지만 배우기 쉬운 - http://www.functionx.com/bcb/index.htm  C++ 빌더 실용 학습 시리즈 – 시간이 좀 지났지만 여전한 고전 자습서 - http://www.yevol.com/en/bcb/  C++빌더 개발자 저널 - http://bcbjournal.org/
  • 36. 36  프로그래밍 추상화 – 스탠포드 교수이며 스탠포드 iTuneU 후계자인 Julie Zelenski가 쓴 - “프로그래밍 방법론” 코스. C + + 프로그래밍 언어를 사용하여 재귀, 알고리즘 분석, 데이터 추상화와 같은 고급 프로그래밍 주제를 다룹니다- http://itunes.apple.com/WebObjects/MZStore.woa/wa/viewPodcast?id=384232917 이 장은 “우니도우와 맥 개발의 시작을 위한 파이어몽키 코스북”의 4장 내용 전체입니다. 코스북 전체를 PDF로 무료 다운로드 받을 수 있습니다. http://tech.devgear.co.kr/13556