RAD스튜디오 버전별 주요 업데이트

IDE 업데이트

□ C++용 Win64 디버깅과 링커

10.4에서 새로운 윈도우즈 64비트 C++ 디버거가 도입되었습니다. LLDB를 기반으로한 이 디버거는 64비트 애플리케이션을 디버깅할때 안정성이 크게 향상되었으며, 추가된 핵심 기능으로는 C++ 및 델파이 문자열과 std::vector, std::map 등을 포함한 STL 컬렉션의 평가 및 검사등을 지원합니다. 또한 앱의 디버그 정보 생성이 확장가능한 새로운 포맷을 사용합니다. 최정적으로 더 안정적이고 다양한 기능의 디버깅 경험과 디버깅 타임에서의 더욱 파워풀해진 검사와 평가를 제공합니다.

 

 

□ 겟잇 패키지 매니저 향상

IDE의 겟잇 패키지 매니저가 10.4에서 대폭 개선되었습니다. 각 패키지에 출시 일자를 표시하고, 출시 일자별로 정렬해 표시할 수 있습니다. 설치된 패키지에 대한 새로운 필터링 옵션, 업데이트 구독 고객만을 위한 독점 컨텐츠, 업데이트가 가능한 패치 표시 등등.

 

 

□ 온라인과 오프라인 설치를 위한 통합 설치 프로그램

10.4에서는 겟잇 설치 기술을 이용한 통합 설치 프로그램을 도입했습니다. 온라인(인터넷 연결) 설치와 오프라인 설치(ISO 이용)를 모두 지원하는 단일 설치 프로그램을 제공합니다. 이제 온라인과 오프라인 설치 모두에서 초기 설정(언어와 플랫폼 선택, 언어 지원, 도움말/리소스 등) 가능하고, 언제든지 옵션을 추가하거나 삭제할 수 있습니다.

□ 코드 에디터 상태 표시줄에 생산성 기능 추가

코드 에디터의 상태 표시줄에는 파일의 코드페이지, 폰트 크기를 표시하고 설정을 포함한 몇가지 생산성 향상이 추가되었습니다.

 

□ TCustomTitleBar 컨트롤

IDE 및 핵심 대화상자에는 새로운 TCustomTitleBar 컨트롤을 이용해 제목 표시줄에 검색 및 설정하는 기능을 구현해 네이티브 룩앤필과 윈도우즈 DWM 동작이 가능합니다.

 

□ 1,000개가 넘는 품질 및 성능 향상 기능들

RAD 스튜디오 10.4는 현재 1,000개가 넘는 품질 및 성능 향상을 제공하는 가장 훌륭한 품질의 릴리즈  중 하나입니다. 여기에는 퀄리티 포털에 고객이 직접 등록해준 700건이 넘는 문제에 대한 수정사항이 포함되어 있습니다.

  • 비주얼 라이브 바인딩: 향상된 성능과 새로운 기능
  • 앱테더링 품질
  • 병렬 프로그래밍 라이브러리 품질 향상 및 개선
  • C++ 툴체인(컾아릴러, 링커, 디버거)
  • RTL 성능 향상 및 새로운 작은 기능들(버퍼링, FreeAndNil)
  • FireDAC 드라이버 업데이트 (SQLite 등)
  • HTTP와 REST 그리고 클라우드와 SOAP 클라이언트 개선

VCL 업데이트

□ VCL 스타일의 High-DPI 지원

10.4에서 VCL 스타일 아키텍처가 High-DPI 및 4K 모니터를 지원하도록 크게 개선되었습니다. VCL 폼의 모든 UI 컨트롤들은 폼이 표시되는 모니터의 적절한 해상도에 맞게 자동으로 조정됩니다.

High-DPI 스타일을 지원하도록 스타일 API가 전면 수정되었습니다. 각 UI 요소는 다중-스케일 버전의 라이브러리를 선택해 어떤 DPI로든 확장되어, UI 요소를 모든 모니터의 해상도에 맞춰 선명하게 표현할 수 있습니다.

 

□ High DPI 이미지 리스트 지원

High DPI(일명 HiDPI)는 디스플레이에 몇 배 더 많아진 픽셀 수 만큼 몇 배로 더 선명하게 보여주는 표시방식입니다. 고해상도 모니터 출시에 따라 윈도우와 실행되는 애플리케이션의 해상도 배율 설정이 이슈가 될 수 있습니다. RAD스튜디오는 이미 10 시애틀(2015년 출시) 버전 부터 발빠르게 이를 지원하고 있습니다.

10.3 리오에서는 버튼, 툴바, 팝업메뉴 등에 포함되는 이미지를 담는 이미지 리스트에 High DPI가 적용되어 UI컨트롤, 글자 등에 더블어 이미지도 높은 해상도록 선명하게 표현하는 기술이 추가되었습니다.

□ 새로운 High-DPI 스타일

새로운 High-DPI 스타일 모드를 지원하도록 기본 제공 및 프리미엄 VCL 스타일을 업데이트해, 어떤 모니터에서도 멋지게 표시되는 애플리케이션을 제작할 수 있습니다.

 

□ VCL 개별 컨트롤(Per-Control) 스타일링

VCL 개발자들은 이제 단일 애플리케이션의 서로 다른 폼에서 다양한 VCL 스타일을 사용할 수 있습니다. 또한 같은 폼안의 서로다른 비주얼 컨트롤마다 다른 스타일을 적용할 수도 있습니다. 물론 여전히 기본 플랫폼 테마를 사용해 모든 요소에 일괄 스타일을 적용도 지원합니다. 이것은 스타일링의 유연성을 높이는 것 외에도 스타일이 지정된 VCL 애플리케이션에서 써드파티 컨트롤등에 대해 스타일을 적용하지 않을 수도 있습니다.

 

□ 새로운 VCL 컴포넌트: 엣지 브라우저 컨트롤

10.4에는 Chromium 기반의 Microsoft의 새로운 Edge WebView2를 사용하는 새로운 VCL 웹브라우저 컴포넌트인 TEdgeBrowser를 포함합니다. Internet Explorer 기반의 기존 TWebBrowser에 비해 훨씬 더 현대적이고 안전한 HTML 엔진을 제공합니다.

또한, 기존 TWebBrowser 컴포넌트는 시스템에서 사용 가능한 브라우저에 따라 Internet Explorer 또는 엣지 브라우저로 표시하도록 확장되었습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/463351

 

□ 새로운 VCL 컴포넌트: TTitleBarPanel과 CustomTiltleBar

새로운 TTitleBarPanel 컨트롤 및 TForm.CustomTitleBar 속성을 사용해 VCL 폼의 기본 윈도우즈 제목 표시줄을 사용자 정의할 수 있습니다. 윈도우즈 제목 표시줄에 VCL 컨트롤을 배치하거나, 아이콘 및 캡션과 같은 항목의 색상등을 제어하거나, 최소화/최대화/닫기 버튼 근처에 새로운 시스템 버튼을 추가하거나, 또는 제목 표시줄을 완전히 새롭게 사용자 정의 할 수 있습니다. 10.4의 새로운 제목 표시줄 지원은 요즘 가장 인기있는 워드프로세서 및 웹브라우저 애플리케이션과 유사한 현대적이고 고급스러운 제목 표시줄을 작성할 수 있습니다.

 

□ 새로운 VCL 컴포넌트: 다중 해상도를 지원하는 이미지 컴포넌트

다중 해상도 및 DPI 스케일링을 지원하는 새로운 TVirtualImage 컴포넌트입니다. 기존 TImage 컴포넌트를 교체해 고품질 이미지 스케일링 및 디스플레이를 지원합니다.

 

□ 윈도우즈 API 업데이트

RAD 스튜디오가 제공하는 뛰어나 플랫폼 통합을 더욱 향상하기 위해 많은 API 선언을 개선하고 추가했습니다.

 

RTL 업데이트

□ 툴체인 성능 및 품질 개선

  • Dinkumware의 STL 다수 개선
  • 주요 RTL 메소드 및 영역 개선, 공통 C++ 라이브러리와 호환성 개선
  • CMake 지원에 대한 여러가지 개선
  • 다수의 품질 및 안정성 개선

 

 

□ 향상된 병렬(페러럴) 프로그래밍 라이브러리 지원

병렬 프로그래밍 라이브러리(PPL: Parallel Programming Library)는 최신 멀티코어 CPU에서 병렬로 작업을 실행할 수 있는 기능을 제공합니다. 10.4에서는 PPL 라이브러리의 성능과 안정성이 크게 향상되었습니다.

 

□ FireDAC 데이터베이스 엑세스 라이브러리

10.4에서는 FireDAC 데이터베이스 엑세스 라이브러리의 일부가 개선되었고, FireBird, PostgreSQL 및 SQLite 용 드라이버가 업데이트되었습니다. SQLite 임베디드 데이터베이스의 경우, 연결 방식을 정적(static) 및 동적(dynamic) 연결 중 하나를 선택할 수 있습니다.

 

□ 라이브 바인딩 성능 및 기능 향상

10.4에서 VCL과 파이어몽키 애플리케이션 모두에서 Visual LiveBindings 아키텍처와 구현의 큰 향상이 있었으며 특히 성능 향상에 중점을 두었습니다. 결과적으로 라이브 바인딩 작업이 훨씬 더 빨라졌습니다.

언어와 컴파일러 업데이트

□ 델파이의 새로운 언어 기능: 커스텀 관리 레코드

델파이 언어에 추가된 주요 문법으로, 델파이 레코드 타입은 이제 초기화(Initialization), 종료(finalization), 그리고 복사 연산자를 직접 작성할 수 있습니다. 개발자들은 레코드 생성, 복사, 파괴하는 각 단계에서 실행될 코드를 직접 작성해 지정할 수 있습니다. 이 추가기능을 잘 활용한다면 클래스보다 더 효과적으로 사용할 수도 있습니다..

 

□ 통합 메모리 관리

델파이 메모리 관리는 지원하는 모든 플랫폼(모바일, 데스크톱 및 서버)에서 전통적인 객체 메모리 관리 방식으로 일원화되었습니다. 자동 참조카운트(ARC: Automatic Reference Counting)에 비해 기존 코드와의 호환성이 높아지고, 컴포넌트, 라이브러리, 애플리케이션 개발에 필요한 코드도 간결해집니다. ARC 모델은 모든 플랫폼 지원을 위한 문자열 관리와 인터페이스 타입 참조를 위해 유지됩니다.


C++의 경우, 이러한 변화는 C++에서 델파이 스타일의 클래스 생성과 삭제가 다른 C++ 클래스의 힙-할당과 같이 일반적인 메모리 관리로 통일되므로 복잡성이 크게 줄어들게 될것입니다.

 

□ C++ 라이브러리 지원 확장

10.4에서는 인기 있는 수많은 C++ 라이브러리를 C++빌더로 이식해 C++빌더에서 사용할 수 있도록 최적화했습니다. libSIMDpp, NemTode, SDL 등을 포함하며 겟잇 패키지 매니저를 통해 다운로드할 수 있습니다. Boost 1.70도 다운로드 받을 수 있습니다.

 

FMX(파이어몽키) 업데이트

□ macOS와 iOS에서 Metal 드라이버 GPU 지원

macOS 플랫폼(델파이)에서는 기존 Quartz API와 OpenGL(애플의 지원중단) 대신 Metal API 기반으로 애플리케이션을 빌드할 수 있습니다. 파이어몽키 Metal 지원은 화면 렌더링 성능을 향상 시키고, 향후 Apple의 마이그레이션 요구에 유연하게 대응할 수 있을 것입니다. 10.4에서는 iOS(델파이와 C++빌더)도 Metal API를 지원합니다.

 

 

□ 최신 iOS와 애플의 새로운 시작화면 스토리보드 요구사항 해결

RAD 스튜디오 10.4를 사용하는 개발자는 최신 iOS SDK 지원 뿐아니라, 내장 IDE 지원을 통해 Apple의 새로운 시작화면 스토리보드 요구사항을 해결할 수도 있습니다.

 

□ Tmemo 컴포넌트에 대한 새로운 FMX 구현 기능 추가

이번 출시에는 윈도우즈 플랫폼에서 스타일 기반 TMemo 컴포넌트에 대해 새로운 FMX 구현이 포함되어, IME 지원 및 추가 기능이 향상되었습니다.

 

□ 개발도구에 FMXLinux 통합 (엔터프라이즈, 아키텍트 에디션 한정)

엔터프라이즈 및 아키텍트 에디션 고객은 FMXLinux 통합 기능을 통해 리눅스 GUI 애플리케이션을 만들수 있습니다.

 

□ iOS용 TWebBrowser 컨트롤

iOS용 TWebBrowser 컨트롤은 WKWebView API를 이용 구현됩니다.

 

□ 맥OS용 미디어 플레이어 컨트롤

macOS의 미디어 플레이어 컨트롤은 AVFoundation을 이용해 구현됩니다.

 

플랫폼에서 항상 네이티브하게 작동되는 컨트롤들은 TWebBrowserTMediaPlayerTBannerAdTMapView가 있습니다 (이 컨트롤들은 파이어몽키(FMX)가 아닌 기존 안드로이드 OS에서 렌더링 됩니다). 10.3 RIO 버전부터 필요에 따라 플랫폼에서 네이티브로 작동하는 새로운 4가지 컨트롤들을 선보입니다. 

IDE 업데이트

10.3 리오는 장기적인 사용성과 가시성이 좋은 깔끔하고 우아한 UI 제공을 목표로 업데이트했습니다. 이 결과, 여러 업데이트 항목들이 추가되어 레이아웃이 대폭 개선되었습니다. 보기에 더 깔끔하고 더 현대적인 화면을 제공합니다.

□ [10.3.3] 엔터프라이즈 커넥터 무상 제공

약 70여개 이상의 SaaS, 세일즈포스, 구글 드라이브 등 다양한 솔루션을 DB 연결하듯이 개발한 프로그램에 바로 연동할 수 있는 솔루션인 엔터프라이즈 커넥터가 무상 제공됩니다. 단 엔터프라이즈 or 아키텍트 에디션을 사용중이고, 업데이트 서브스크립션 계약중인 분들께만 무상 제공됩니다 (1년 구독 라이선스).

 

 

□ [10.3.2] C++ 코드인사이트: 코드 완성 기능(Code Completion)

Clang에 대한 코드 완성 기능을 완벽 지원합니다. 코드 완성은 . , ->, :: 그리고 헤더 부문의 #include <> 구문에 < 입력 시 자동 호출됩니다.
Ctrl + 스페이스바를 눌러서 수동으로 불러올 수도 있습니다. 현재 위치에서 사용 가능한 항목의 목록을 자동으로 표시해주고, 원하는 항목을 화살표 버튼 + 엔터키를 이용해 IDE에 적용할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/455198

 

□ [10.3.2] C++ 코드인사이트: 파라미터 완성

메소드가 있으면 IDE가 파라미터 이름과 타입을 확인할 수 있도록 알려줍니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/455198

 

□ [10.3.2] C++ 코드인사이트: 오류 인사이트

IDE 기능 중 하나로 오류가 있는 부분을 빨간색 줄로 표시해줍니다. 컴파일 하기 전에 에디터 상에서 알려주는 기능입니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/455198

 

□ [10.3.2] C++ 코드인사이트: 툴팁 인사이트와 코드 브라우징

툴팁 인사이트는 심볼(symbol)에 마우스를 올려놓으면 선언을 보여주는 기능입니다.
코드 브라우징은 선언된 부분으로 자동 이동할 수 있는 기능입니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/455198

 

 

□ [10.3.2] 코딩 & 디자인 화면의 빠른 전환

10.3.2에서는 특히 빠른 속도와 부드러운 화면 전환에 초점을 맞추었습니다. 훨씬 자연스럽게 동작하는 모습을 확인할 수 있습니다.

 

□ [10.3.2] 더욱 좋아진 퀄리티 향상

리포팅된 400개 이상의 이슈들을 해소했습니다. 그 중에서도 두드러지는 부분들은 다음과 같습니다.

  • 툴바 모음: 사용자가 배치해놓은 위치에 툴바가 위치합니다.
  • IDE 사이즈 조절이 가능합니다. 최소화, 최대화 모두 가능합니다.
  • 레이아웃 변경: 예를 들어 디버깅 실행 시, IDE를 디버그 레이아웃으로 변경할 수 있습니다.
  • 타이틀 바의 컨트롤들: 예를 들어 IDE 메인 화면, 옵션 대화 상자의 검색창 등이 있습니다.

 

□ 북마크(Bookmarks) 기능

소스코드가 많고 규모가 큰 프로젝트더라도 IDE에서 바로 원하는 코드 위치를 찾아 작업할 수 있어, 불필요한 작업 시간이 크게 줄어듭니다. 이 기능은 10.3.1을 받은 고객이라면 겟잇패키지매니저(GetIt Package Manager)를 통해 다운로드 받아 사용할 수 있습니다. 코드 편집기에서 이전에 작업했던 위치를 보여주는 기능입니다. ‘바로가기’를 설정하면 그 위치로 바로 이동할 수 있는 새로운 북마크가 만들어집니다. 생성한 모든 북마크들은 북마크 화면에서 모두 확인할 수 있습니다. 그리고 구문 강조 표시와 작업 전부 정보에 대해서도 확인할 수 있습니다. 또한 ‘이동하기(Escape)’ 버튼을 이용해 이동할 위치들을 모아놓은 캐럿 북마크(Caret Bookmarks) 기능을 제공합니다.

 

□ 네비게이터 기능

델파이에서 지능형 검색을 활용해 유닛의 어떤 위치로든 바로 이동할 수 있는 기능입니다. Ctrl + G를 누르고 타이핑하면, 유즈절(uses clause), 메소드, 속성(property), 속성 백업 필드 또는 속성 메소드, 다른 코드 요소르 이동할 수 있습니다. 그리고 델파이와 C++ 모두에서 ‘미니맵’ 기능을 사용할 수 있습니다. 이 기능은 코드 미니어쳐 버전을 보여주는 사이드 패널입니다.

 

□ 선택된 화면 모습의 변화

제목 표시줄이 더 커져 메뉴명을 한 눈에 파악할 수 있고 클릭이나 이동이 더 쉬워졌습니다. ‘프로젝트’ 화면의 툴 바를 한 줄로 정리했습니다. 화면에 보이지 않는 메뉴들은 드롭다운 형식으로 표시해 이전과 동일한 기능을 사용할 수 있습니다. 전체적인 화면 너비와 높이가 넓어져 메뉴 파악이 더욱 쉬워졌습니다.

 

□ 데스크탑 레이아웃, 테마, IDE 인사이트 컨트롤

다른 도구들과 마찬가지로 도구 모음에 위치해있던 컨트롤들이 10.3 버전부터는 제목 표시줄로 위치가 이동했습니다. 

 

□ 코드 에디터 탭

탭 메뉴명을 더 구분하기 쉽도록 바뀌었습니다. 탭 사이즈를 좀 더 크게 만들어 클릭하기 쉬워졌습니다. 각 탭은 X 버튼을 클릭해 닫을 수 있습니다. 

 

□ 선택된 메뉴를 명확하게 표시

클릭한 항목이 포함된 메인 메뉴를 진한 파란색으로 나타내 클릭된 영역을 확실하게 알아볼 수 있습니다. 

 

□ VCL 디자이너

클사용되지 않는 상당(top), 좌측(left)의 크기 조절을 위한 드래그 버튼이 사라졌습니다. 이전에는 7×7 px 사이즈의 사각형을 클릭해 크기를 조정해야 했지만, 이 크기도 더 커졌습니다. 드래그 바는 다른 VCL 컨트롤과 마찬가지로 마우스오버에 반응합니다.

 

□ 새로운 밝은 테마와 어두운 테마

밝은 테마(Light Theme)

10.3의 밝은 테마가 바뀌었습니다. 다양한 파란색 음영을 사용했으며, 회색을 주로 사용했던 이전 버전들과 달리 쾌적한 시각 효과를 제공합니다.

 

 

 

 

 

 

 

어두운 테마(Dark Theme)

10.2.2 버전에서 처음 선보였던 어두운 테마에도 변화가 있습니다. 기존과 비슷한 색상을 사용하지만 새로운 밝은 테마에서 아이디어를 얻어 색상에 변화가 있었고 이를 통해 눈의 피로도를 줄여주고 장시간 사용하기 좋습니다. 

VCL 업데이트

10.3 리오는 High DPI를 지원하는 이미지 리스트가 추가되어, 컨트롤 내의 이미지들을 다양한 해상도로 더욱 선명하게 표현할 수 있게 되었습니다.

 

□ VCL용 새로운 스타일 10종 지원

새로운 스타일들을 활용해 애플리케이션 룩앤필을 빠르게 업데이트 할 수 있습니다. 제공되는 스타일들을 원하는대로 바꾸어 사용할 수도 있습니다. 10.3.1에서는 새로운 스타일이 총 15 종류가 제공되는데, 그 중 5가지는 FMX(파이어몽키)용이고 10가지는 VCL용입니다. FMX 스타일은 윈도우, 맥OS, 안드로이드, iOS 모두에서 활용할 수 있는 멀티-디바이스 스타일이고, VCL 스타일은 윈도우에서 활용 가능합니다. 그리고 비트맵 스타일 디자이너 템플릿도 포함되어 있습니다.

새로운 스타일들은 IDE의 겟잇 패키지 매니저(GetIt Package Manager)를 이용해 다운로드 받아 사용할 수 있습니다.

새롭게 추가된 10 종류의 VCL 스타일들:

  • VCL Style – Calypso
  • VCL Style – Flat UI Light
  • VCL Style – Material Oxford Blue
  • VCL Style – Puerto Rico
  • VCL Style – Stellar
  • VCL Style – Wedgewood Light
  • VCL Style – Windows 10 – Black Pearl
  • VCL Style – Windows 10 – Blue Whale
  • VCL Style – Windows 10 – Clear Day
  • VCL Style – Windows 10 – Malibu

 

□ High DPI 이미지 리스트 지원

High DPI(일명 HiDPI)는 디스플레이에 몇 배 더 많아진 픽셀 수 만큼 몇 배로 더 선명하게 보여주는 표시방식입니다. 고해상도 모니터 출시에 따라 윈도우와 실행되는 애플리케이션의 해상도 배율 설정이 이슈가 될 수 있습니다. RAD스튜디오는 이미 10 시애틀(2015년 출시) 버전 부터 발빠르게 이를 지원하고 있습니다.

10.3 리오에서는 버튼, 툴바, 팝업메뉴 등에 포함되는 이미지를 담는 이미지 리스트에 High DPI가 적용되어 UI컨트롤, 글자 등에 더블어 이미지도 높은 해상도록 선명하게 표현하는 기술이 추가되었습니다.

 

□ TImageCollection

TImageCollection 컨포넌트는 이미지 목록별로 다양한 해상도의 이미지를 등록할 수 있는 컴포넌트입니다. TImageCollection Editor를 통해 다양한 해상도의 이미지를 등록/편집/삭제할 수 있습니다. 

 

□ TVirtualImageList

탭이미지 컬렉션(TImageCollection)에 등록된 다중해상도 이미지를 이미지 리스트로 제공하기 위해 TVirtualImageList 컴포넌트를 사용합니다. TVirtualImageList는 TCustomImageList를 상속받아 구현되었으며, 응용 프로그램이 구동되는 윈도우의 디스플레이 배율에 맞게 이미지 컬렉션의 이미지를 제공하는 역할을 합니다. 

 

□ High DPI가 적용된 이미지 리스트

위 그림은 각각 TImageList와 TVirtualImageList (+TImageCollection)을 적용한 툴바(TToolbar) 화면입니다. 100%, 150%, 225% 배율 적용 시 배율에 따라 적절한 해상도의 이미지로 선명하게 표현된 것을 확인할 수 있습니다. 

RTL 업데이트

10.3 리오는 RTL 측면에서 JSON 및 HTTP에 대한 표준 호환성 향상 등 상당한 성능 향상이 있습니다.

 

□ 데이터 컬렉션(Data Structure) 증가 정책 변경

여러가지 데이터 컬렉션(TStringList, TList, TList<T>, TQueue<T>, TSTack<T>)는 데이터가 가득차 확장이 필요하면 이전보다 2배의 크기로 크기를 증가했습니다. 이제 좀 더 유연하게 성장하도록 증가 정책이 변경되었습니다.

새로운 증가 정책은 공유 전역 함수(System.pas, GrowCollection)에 구현되며, SetGrowCollectionFunc 함수를 통해 사용자 정의 할 수 있습니다.

 

□ TStringBuilder 변경

성능 향상을 위해 일부 변경되었습니다. 메모리 증가 정책과 유사한 변경 및 중복 코드 제거 등의 전반적인 정리등을 진행했습니다.

TStringBuilder 열거형이 최적화 되었습니다. 

 

□ JSON 개선

정확성과 성능을 위해 JSON  처리 및 분석 향상이 크게 진행됐습니다

 

□ 기타 RTL 변경

10.3 이전에는 디버그 정보를 활성화 하면 컴파일러 최적화가 비활성화 되었습니다. 업데이트된 Win32 컴파일러에서 이제 최적화된 빌드를 디버깅할 수 있습니다. 

 

□ 앱 테더링 긴 문자열 전송

앱테더링에 사용되는 TTetheringAppProfile 클래스의 SendString / AsString 작업의 현재 1,400문자 길이에 제한되어 있었습니다. 10.3 에서는 다음 변경 사항 및 추가 기능을 통해 호환성을 유지하며 긴 문자열 처리가 가능하게 되었습니다.

  • 새로 추가된 TTetheringAppProfile의 SendLongString 메소드는 문자열과 스트림을 사용합니다.
  • TResourceValue.AsString은 받은 스트림에서 문자열을 반환합니다. 만약 없다면 반은 문자열 값을 반환합니다. 이는 일반 문자열과 긴 문자열에 대한 대응입니다.

문자열 길이가 1.3 KB보다 작은 경우 TTetheringAppProfile.SendString을 사용하고, 더 길다면 TTetheringAppProfile.SendLongString을 사용하기 바랍니다. 

 

□ TMemIniFile 최적화

RAD 스튜디오 10.3 리오는 TMemIniFile 구현이 최적화 되었습니다. TMemIniFile 읽기와 생성(constructing)이 10~25배 빨라지고 메모리 사용량도 절반으로 감소했습니다. TMemIniFile 작업도 향상되어 이전 구현에 비해 50~100 고속화 되었습니다.

또한 10.3에서는 다음 두가지 오버로드 생성자가 추가되고 스트림에서 TMemIniFile을 가져올 수 있습니다.

  • TMemIniFile.Create(Stream)
  • TMemIniFile.Create(Stream, UseLocale)

언어와 컴파일러 업데이트

10.3 리오는 특히 델파이와 C++빌더 모두 언어에서 큰 변화가 있습니다. 델파이는 전통적인 방식을 뛰어넘는 인라인 변수 선언 지원과 더불어 타입 추론을 지원하고 C++빌더는 19년 현재 최신 표준인 C++17을 공식 지원합니다.

 

□ [10.3.2] 델파이 맥OS 64-bit 애플리케이션 개발 지원

LLVM 컴파일러 인프라를 기반으로 하는 새로운 맥OS 64-bit 플랫폼용 델파이 컴파일러가 추가되었습니다. 지금까지 지원되었던 맥OS, 윈도우, 리눅스와 같은 다른 모든 델파이 데스크탑/서버 플랫폼과 동일한 비ARC 형식입니다.

 

□ [10.3.2] C++17, 윈도우 64-bit 지원

최신 C++표준인 C++17을 사용하는 훌륭한 컴파일러가 제공됩니다. 최신 언어 기능들을 활용할 수 있습니다.
C++17이 모든 윈도우를 완벽 지원하면서, 최신 C++ 언어 기능들을 Win32와 Win64에서 모두 활용할 수 있습니다.

 

□ 인라인 변수 선언

델파이 언어가 10.3 버전부터 로컬 변수 선언에 있어 훨씬 더 융통적으로 변합니다. 매우 핵심적인 기능 변화라고 볼 수 있습니다. 이번 업데이트는 본래 파스칼(Pascal) 언어의 핵심 개념을 깨는 변화이기는 합니다. 하지만 이 변화는 많은 장점을 제공하며, 이를 통해 불필요한 코드를 줄일 수 있습니다.

 

□ 타입 추론

인라인으로 선언 된 변수는 타입 추론의 장점이 있습니다. 직접 할당하는 인라인 변수는 형식을 지정할 필요가 없습니다. 이것은 거기에 대입 된 값에서 형식을 유추 할 수 있기 때문입니다.

 

□ Clang 업그레이드: C++17 지원

C++빌더 및 RAD 스튜디오 10.3은 윈도우 32비트용 C++17을 지원하는 업데이트된 Clang 확장 컴파일러가 도입되었습니다. 점진적인 컴파일러 업그레이드의 일환으로, 최신 C++ 언어 기능을 사용해 더욱 강력하고 간결한 코드를 작성하고, 써드파티 C++ 라이브러리를 사용해 더 강력한 애플리케이션을 구축할 수 있습니다.

 

□ Win64에서 연산 성능 향상

많은 C ++ 수학 함수가 새롭게 구현되었습니다. 이러한 방법은 이전 버전에 비해 평균적으로 약 2 배 빨라졌습니다. 

 

□ C++ 코드 보완 개선

C++ Win32 코드 보완 업데이트로 확장된 Clang 기반의 C++ 컴파일러를 사용합니다. 이로써 이전보다 훨씬 빠른 C++ 코드 보완이 가능합니다.

 

□ C++ 오류 인사이트

오류 인사이트(오류 항목 아래에 빨간색 밑줄을 그어 편집기에서 코드의 문제를 미리 확인할 수 있는 기능)가 C++빌더에서도 가능해졌습니다. 새로운 Win32용 Clang 확장 컴파일러를 사용하는 경우 이 기능이 제공됩니다.

FMX(파이어몽키) 업데이트

□ [10.3.3] 델파이 안드로이드 64비트 지원

구글 플레이 스토어 지원과 새로운 64비트 지원 요구 사항이 해결되었습니다. 완벽한 안드로이드 앱 번들 지원으로 안드로이드 64비트 앱을 구글 플레이 스토어에 등록하세요.

 

 

□ [10.3.3] iOS 13, 맥OS 카탈리나 지원

10.3.3으로 iOS 13(델파이, C++빌더 모두)과 맥OS 카탈리나(델파이만) 용 앱을 개발할 수 있습니다. 다크 테마를 완벽 지원하는 iOS 13 앱을 지금 앱스토어에 배포하세요. 공증 지원까지 갖춘 64비트 맥OS 카탈리나 델파이 앱도 맥OS 앱 스토어에 배포할 수 있습니다.

 

 

□ iOS12, iPhone X 시리즈 디바이스 지원

10.3.1 버전부터 최신 iOS와 아이폰 디바이스들을 지원합니다. 이는 2019년 3월부터 시행될 애플(Apple)사의 앱스토어 요구 사항에 대응하기 위해서 꼭 필요한 지원 기능입니다. 새로운 애플사의 요구사항은 ‘앱은 iOS 12.1 SDK로 구축될 것’, ‘아이폰XS Max, 아이패드 Pro를 완벽 지원할 것’ 두 가지 입니다.

이번에 업데이트된 내용은 다음과 같습니다.

  • 새 이미지 크기를 보여주는 Info.plist 업데이트
  • IDE에서 앱 아이콘, 스플래시 화면 크기 추가 지원 (아이폰/아이패드)
  • 아이패드 Pro에 대한 네이티브 해상도 지원

 

 

□ FMX용 새로운 스타일 5종 지원

새로운 스타일들을 활용해 애플리케이션 룩앤필을 빠르게 업데이트 할 수 있습니다. 제공되는 스타일들을 원하는대로 바꾸어 사용할 수도 있습니다. 10.3.1에서는 새로운 스타일이 총 15 종류가 제공되는데, 그 중 5가지는 FMX(파이어몽키)용이고 10가지는 VCL용입니다. FMX 스타일은 윈도우, 맥OS, 안드로이드, iOS 모두에서 활용할 수 있는 멀티-디바이스 스타일이고, VCL 스타일은 윈도우에서 활용 가능합니다. 그리고 비트맵 스타일 디자이너 템플릿도 포함되어 있습니다.

새로운 스타일들은 IDE의 겟잇 패키지 매니저(GetIt Package Manager)를 이용해 다운로드 받아 사용할 수 있습니다.

새롭게 추가된 5 종류의 FMX 스타일들:

  • FMX Style – Calypso
  • FMX Style – Material Oxford Blue
  • FMX Style – Puerto Rico
  • FMX Style – Stellar
  • FMX Style – Wedgewood Light

 

□ 안드로이드 API 레벨 26이상 지원

RAD 스튜디오 10.3 리오는 안드로이드 API 레벨 26을 공식 지원합니다.

구글은 보안과 성능에 최적화된 최신 API 기반으로 앱을 만들고, 사용자가 혜택을 누릴 수 있도록, 플레이 스토어에 등록 시 안드로이드 레벨 26 이상을 요구하도록 정책을 변경했습니다.(신규앱 등록 2018년 8월 부터, 기존앱 업데이트 2018년 11월 부터).

RAD 스튜디오 10.3 리오는 최신 SDK와 NDK를 지원하고, 매니페스트에 적절한 API레벨을 설정할 수 있도록 업데이트 되었습니다.

또한 최신 API에서 변경된 권한 모델등을 제공하도록 업데이트 되었습니다.

 

□ 새로운 안드로이드 런타임 권한 모델 지원

     

          [기존 권한 요청 방식]                  [새로운 권한 요청 방식]

안드로이드 API의 최신버전은 런타임 시 권한을 요청하는 매커니즘으로 변경되었습니다.

기존의 권한 모델은 설치 시 전체 권한을 승인하는 방식이었습니다. 새로운 권한 모델은 기능 사용 시 개별 권한을 묻는 방식으로, 사용자는 기능 별 허용 및 거부가 가능해졌습니다.

위 변경에 따라 10.3 리오에서는 사용 권한을 요청하는 메소드가 추가되었고, 그 결과를 콜백 메소드로 받아 기능을 수행할 수 있도록 업데이트 되었습니다. 

 

□ 안드로이드 Z-Order

XE7 버전에서 iOS용 ControlType 속성이 처음 적용되었습니다. 그리고 10 시애틀 버전에서는 이 속성이 윈도우용까지 확장되었습니다. 플랫폼 설정을 변환하면 파이어몽키 컨트롤이 런타임 시 플랫폼 네이티브 컨트롤로 전환됩니다.

10.3 RIO에서는 ControlType 속성이 안드로이드 용으로까지 확장됩니다. 그리고 이로써 얻게될 두 가지 중요한 이점을 소개하고자 합니다: 더욱 네이티브한 컨트롤과 수정된 Z-Order가 그것입니다. 

 

□ 다양한 안드로이드 네이티브 컨트롤

        [TSwitch 컴포넌트]

플랫폼에서 항상 네이티브하게 작동되는 컨트롤들은 TWebBrowserTMediaPlayerTBannerAdTMapView가 있습니다 (이 컨트롤들은 파이어몽키(FMX)가 아닌 기존 안드로이드 OS에서 렌더링 됩니다). 10.3 RIO 버전부터 필요에 따라 플랫폼에서 네이티브로 작동하는 새로운 4가지 컨트롤들을 선보입니다. 

RAD서버 업데이트

10.3 리오는 RAD 서버의 성능향상과 엔드 포인트 연동을 더 쉽고 유연하게 작성할 수 있는 특성등이 추가되었습니다.

□ [10.3.3] RAD서버 도커(Docker) 배포 기능 제공

기본 제공되는 스크립트로 RAD서버 도커(Docker)를 배포하고 구성할 수 있는 기능이 제공됩니다. 도커 허브(Docker Hub)에서 호스팅되는 리눅스의 RAD서버용 도커 이미지도 제공됩니다. 바로 사용할 수 있는 형태입니다! 이제 도커에서 RAD서버를 배포하는 작업이 정말 간편해집니다.

 

□ [10.3.2] 새로운 RAD서버 관리 콘솔

새로운 기능면에서, UI와 사용 기능상의 업그레이드 외에도 REST 디버거 통합 버전이 제공된다는 점이 가장 획기적입니다. 이제 특정 RAD 서버 인스턴스에서 사용가능한 엔드포인트를 리스트로 정리하여 볼 수 있습니다.

 

□ 재설계한 RAD서버 콘솔 UI

RAD서버 콘솔 UI가 변경되었습니다. 이제 RAD서버 API 분석을 한 눈에 확인할 수 있고, Ext JS 프레임워크로 마이그레이션 할 수도 있습니다. 또한 RAD서버 푸시 알림이 더 많은 디바이스에 지원됩니다. 추가 분석 데이터에 대한 지원도 제공됩니다. 이 기능은 IDE의 겟잇 패키지 매니저(GetIt Package Manager)를 통해 다운로드 받아 사용할 수 있습니다.

 

□ 엔드포인트 메소드와 Content-Type, Accept 연동 특성 추가

커스텀 리소스에 요청 시 URL과 HTTP 메소드에만 의존하지 않고, HTTP 해더의 Accept 및 Cotnet-Type에 따라 엔드 포인트 메소드를 연결하는 특성이 추가되었습니다. 이제 동일한 URL 및 HTTP 메소드라도 Accept 및 Content-Type에 따라 다른 동작을 구현할 수 있습니다.

  • EndpointProduce : GET 메소드의 엔드 포인트에 추가할 수 있습니다. HTTP 해더의 Accept 항목 값과 일치하는 MIME 타입/파일 확장자를 파라메터로 지정합니다.
  • EndpointConsume : PUT / POST / PATCH 메소드의 엔드 포인트에 추가할 수 있습니다. HTTP 해더의 Content-Type 항목 값과 일치하는 MIME 타입/파일 확장자를 파라메터로 지정합니다.

 

□ 커스텀 메소드와 HTTP 메소드 연결 특성 추가

RAD 서버의 이전 버전에서는 HTTP 메소드(GET, POST 등)의 엔드 포인트 메소드 이름과 매핑되었습니다.

이제 위 방식 외에도 다른이름의 메소드를 엔드 포인트 메소드로 매핑할 수 있는 EndpointMethod 특성이 추가되었습니다. 

 

□ 요청 처리를 클래스 또는 컴포넌트로 위임

RAD 서버의 사용자 리소스에 발생한 요청을 필드로 지정한 다른 자원 모듈(클래스 / 컴포넌트)로 위임하는 기능이 추가되었습니다.

위임받는 클래스는 IEMSEndpointPublisher 인터페이스를 구현해야 합니다. 

 

□ JSON 처리를 위한 헬퍼 컴포넌트 추가

컴포넌트에 요청 처리를 위임하는 새로운 기능을 이용해 RAD 스튜디오 10.3 리오에서 JSON 처리를 단순화 하는 새로운 컴포넌트가 추가되었습니다.

  • TEMSFileResource: 경로 및 파일이름 속성에 지정된 파일로 요청 처리
  • TEMDDataSetResource: DataSet 속성에 설정된 데이터셋의 데이터를 JSON으로 처리, 페이징 파라메터 지원 

IDE 업데이트

□ [10.2.2] 다크 테마와 라이트 테마 지원

IDE에서 기존의 회색 테마 외에도 다크테마를 추가했습니다. 야간 작업 또는 오랫동안 작업 시 눈의 피로를 줄일 수 있습니다.

IDE 데스크탑 툴바에서 “Dark” 또는 “Light”로 테마를 변경할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/438339

 

□ [10.2.2] 기본 컴포넌트 아이콘 변경

기본 컴포넌트의 아이콘들이 전체적으로 심플하고 모던하게 변경되었습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/438339

 

□ [10.2] View 메뉴 분류별로 재배치 개선

View 메뉴가 분류별로 재배치 되어 더 빠르게 메뉴를 찾을 수 있습니다.
(Object Inspector, Structure, Messages 등의 도구 창은 Tool Windows 하위 메뉴로 이동되었으며 새 Editor 하위 메뉴에는 편집기의 컨텍스트 메뉴에있는 여러 가지 편집기와 유용한 기능이 포함되어 있습니다).

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/431419

 

□ [10.2] 코드 에디터 탭에서 “Show In Explorer” 기능 추가

코드 에디터 탭의 컨텍스트 메뉴에 “Show in Explorer” 메뉴가 추가되어, 편집 중인 파일 위치의 탐색기를 바로 열 수 있습니다. 프로젝트 매니저의 Show In Explorer 메뉴는 프로젝트 파일 위치의 탐색기를 바로 열 수 있습니다.

 

□ [10.2] 기타 개발환경 개선사항

  • 코드 인사이트(InSight)와 코드 완성(Completion)은 이제 정적 및 동적 배열을 올바르게 처리합니다.
  • 서로 다른 DPI에서 폼을 디자인하고 오픈 하는것에 대한 지원이 향상되었습니다.
  • 프로젝트의 매니페스트 파일 지원은 이제 Invoker, Highest Available 및 Require Administrator와 같은 몇 가지 실행 수준을 지원하며 UI 액세스 플래그도 설정할 수 있습니다.
  • IDE 로딩 속도는 네트워크 부하가 높거나 네트워크 연결이 끊긴 상태에서도 빠릅니다.
  • 100 개가 넘는 프로젝트가 있는 대형 프로젝트 그룹을 지원하는 기능이 개선되었습니다.
  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/431419

VCL 업데이트

□ [10.2.2] 새로운 VCL 컨트롤

TCardPanel

TCardPanel은 여러장의 카드를 관리하는 패널 컴포넌트입니다. 한번에 하나의 카드만 표시되며, 메소드(PreviousCard, NextCard, ActiveCard, ActiveCardIndex)를 호출해 카드를 전환할 수 있습니다. 각 카드는 다른 컨트롤들을 포함하는 컨테이너 역할을 합니다.

  • 샘플 프로젝트 경로 : C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\VCL\CardPanel

 

TStackPanel

TStackPanel은 컨트롤들을 담는 컨테이너로, 컨트롤들의 자체 크기를 유지하며 수직 또는 수평으로 정렬할 수 있습니다.컨트롤 모두를 대상으로 위치(왼쪽, 중안, 오른쪽, 채우기)를 지정할수도, 개별 컨트롤 마다 위치를 지정할 수 있습니다.

  • 샘플 프로젝트 경로 : C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\VCL\StackPanel

 

TDatePicker / TTimePicker

윈도우 10 룩앤필을 제공하는 새로운 형식의 날짜 및 시간 선택 컨트롤입니다. 날짜 포맷(DateFormat)과 시간 포맷(TimeFormat)을 직접 지정할 수 있어 원하는 날짜 형식으로 제공가능합니다. 드롭다운 메뉴의 갯수 지정, OK/Cancel 버튼 표시, 분단위 증가량 등을 사용자 지정할 수 있습니다. 이 컴포넌트들은 자체적으로 윈도우즈10 룩앤필을 제공하며, 윈도우 7과 윈도우 8에서도 동일한 윈도우즈10 룩앤필을 지원합니다.

 

  • 샘플 프로젝트 경로 : C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\VCL\DateTimePicker

자세히 보기: https://tech.devgear.co.kr/delphi_news/438358

 

□ 고 해상도 지원

  • 폼의 경계는 WM_DPICHANGED 메시지에 대한 응답으로 올바르게 조정됩니다. 즉, 폼의 상단 / 왼쪽 위치 뿐만 아니라 TForm.AutoScroll이 올바르게 작동됩니다.
  • 시스템에 해상도가 다른 여러 모니터가 있는 경우 폼이 올바른 배율로 열립니다.
  • 다른 해상도를 사용하는 폼간에 이동 시 TTabSheet 및 TPageControl, 탭 시트 또는 페이지 컨트롤에 배치 된 ActionMainMenuBar 와 VCL 메뉴 (메인 메뉴와 팝업 메뉴)가 높은 해상도 모니터에 올바르게 표시됩니다.
  • TStatusBar의 높이가 정확합니다.
  • 메시지 대화 상자의 아이콘 크기가 올바르게 조정되었습니다.
  • 서로 해상도 모니터 간에 폼을 이동할 때 고정 된 컨트롤 위치에 유지됩니다.
  • TCheckBox 및 TRadioButton가 정확히 그려집니다.
  • 폼 상속에서 몇 가지 이슈가 해결되었습니다. 계승된 폼에서 ParentFont가 true로 설정된 패널 위에 컨트롤들이 배치 될 때 정확한 폰트 사이즈가 사용됩니다. TListView 컬럼 사이즈는 상속 된 폼에서 그대로 유지됩니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/431449

RTL 업데이트

□ [10.2] HTTP 클라이언트

64비트 리눅스에서 네이티브 HTTP 클라이언트 라이브러리(libCurl)를 지원합니다. HTTP 클라이언트에서 개선 된 비동기 지원

 

□ 64 비트 리눅스를위한 RTL 지원

RAD Studio 10.2 도쿄는 표준 시스템 함수, 스트림 및 IOUtils 유닛을 사용하여 리눅스파일 시스템을 지원합니다. 또한 64비트 리눅스에 대한 표준 RTL 경로 기능 지원을 제공합니다.

 

□ RAD 서버 다중 테넌시 지원

다중 테넌시 지원을 사용하면 하나의 RAD 서버 데이터베이스 연결을 사용하는 단일 RAD 서버 인스턴스가 분리된 다중의 테넌트를 지원할 수 있습니다.

 

 

□ 앱 테더링 개선 사항

  • TTetheringManager과 TTetheringProfile 의 새로운 SynchronizeEvents 속성은 메인 스레드와의 이벤트 동기화를 제어합니다. 따라서 이제 관리자와 프로파일은 이벤트 핸들러가 메인 스레드에서 실행되는지 여부를 제어 할 수 있습니다.
  • 로그 필터링 향상 : 더 많은 로깅 메시지가 추가되었습니다.
  • 새로 추가된 TTetheringAppProfile의 SendLongString 메소드는 문자열과 스트림을 사용합니다.
  • TResourceValue.AsString은 받은 스트림에서 문자열을 반환합니다. 만약 없다면 반은 문자열 값을 반환합니다. 이는 일반 문자열과 긴 문자열에 대한 대응입니다.

□ 추가되거나 기능 향상된 해시 함수
System.Hash 유닛에 정의 되어 있는 다음 메소드들은 스트림 또는 문자열을 입력 매개 변수로 허용합니다.

  • THashMD5.GetHashString.
  • THashMD5.GetHashBytes
  • THashSHA1.GetHashString
  • THashSHA1.GetHashBytes
  • THashSHA2.GetHashString
  • THashSHA2.GetHashBytes

System.Hash 유닛에는 파일에서 해시 다이제스트를 얻을 수 있는 다음과 같은 새로운 메소드가 있습니다.

  • THashMD5.GetHashBytesFromFile
  • THashMD5.GetHashStringFromFile
  • THashSHA1.GetHashBytesFromFile
  • THashSHA1.GetHashStringFromFile
  • THashSHA2.GetHashBytesFromFile
  • THashSHA2.GetHashStringFromFile

자세히 보기: https://tech.devgear.co.kr/delphi_news/431498

 

□ 파이어 버드 개선 사항

Direct I / O 백업 기능 지원을 위해 새로운 Direct 속성 추가

 

□ MySQL 기능 향상

MySQL v 5.7 지원

 

MariaDB v 5.5 이상 지원. FireDAC의 MySQL 노드를 사용하여 MariaDB에 연결합니다.

 

최신 MySQL 버전 5.6.x 및 5.7.x와의 호환성.

 

이전 API (MySQL 텍스트 프로토콜)와 PS API (MySQL prepared statements 프로토콜) 모두 지원됩니다.

  • TFDResourceOptions.DirectExecute 속성을 사용하여 API를 선택할 수 있습니다.
  • 사용중인 API에 따라 TFDCommand.CommandIntf.CliObj 속성은 TMySQLStatement 또는 TMySQLResult 개체를 반환합니다.

내부 BLOB 스트리밍 지원 (smOpenWrite 모드에서만).

연결 트랜잭션 상태와 TFDConnection.InTransaction 속성의 동기화 개선. 이 등록 정보를 사용하면 연결 트랜잭션이 현재 진행 중인지 여부를 결정할 수 있습니다.

 

□ TFDMemTable이 개선

  • TFDMemTable 컴포넌트를 개선하여 설계 시점에 TFDMemTable 데이터 셋을 편집할 수 있습니다.
  • TFDMemTable 컨텍스트 메뉴에 컴포넌트 데이터를 편집하여 양식에 저장할 수있는 Edit DataSet … 항목을 제공합니다. 데이터는 런타임에서도 사용할 수 있습니다.(참고 : Edit DataSet …을 사용하기 전에 TFDMemTable.FieldDefs에 대한 필드 정의를 지정하거나 영구 필드를 만들어야합니다).  

 

□ 기타 FireDAC 변경 사항

  • TFDDataMove 컴포넌트는 삭제되어 툴 팔레트에서 더 이상 사용할 수 없습니다. 대신 TFDBatchMove 컴포넌트를 사용하십시오.( 시작 > 프로그램 > Embarcadero RAD Studio 10.2 Tokyo > Samples 를 선택하고 Object Pascal\Comp Layer\TFDBatchMove\DataMove_Deprecated 폴더에 있는 FireDAC.Comp.DataMove.pas를 사용하십시오.
  • TFDBatchMove가 최적화되었습니다. 그 결과로 TFDBatchMoveMappingItem의 DestValue 및 SourceValue 속성을 더 이상 사용할 수 없습니다.
  • TFDMSAccessService는 이제 Microsoft Access 2007 이상을 지원합니다.

 

□ TDBImage JPEG과 PNG 그래픽형식 지원

  • VCL의 TDBImage가 Bitmap 뿐 아니라, JPEG과 PNG 그래픽 형식을 지원합니다.
  • 기타 다른 그래픽 포맷을 지원하려면 OnFindGraphicClass 이벤트의 GraphicClass 파라메터에 그래픽 처리 클래스를 매핑해 추가 지원할 수 있습니다.

 

□ Blob Field Display 옵션 강화

  • Blob 형식의 데이터를 클래스 형식 또는 문자열로 표현할 수 있습니다.
  • DisplayValue로 표시형식을, DisplayWidth로 표시 길이를 지정할 수 있습니다.

 

□ 기타 데이터베이스 개선

  • TField 클래스에 대한 직접 GUID 액세스.

 

자세히 보기: https://tech.devgear.co.kr/delphi_news/431411

FMX(파이어몽키) 업데이트

□ iOS의 새로운 시스템 상태 표시 줄 옵션

iOS의 시스템 상태 표시줄 동작을 변경하기위한 SystemStatusBar.BackgroundColor 및 SystemStatusBar.Visibility와 같은 두 가지 새로운 속성이 TForm에 추가되었습니다.

 

□ TMultiView의 개선된 기능

  • Enabled 속성을 사용하여 TMultiView와의 사용자 상호 작용을 해제합니다.
  • BorderOptions 속성이 추가되어 테두리 모양을 관리할 수 있습니다.
  • 도킹 패널 모드에 Top과 Bottom 속성이 추가되었습니다.

 

 

□ 안드로이드에서 델파이와 자바 쓰레드 통일

델파이 코드가 이제 자바 UI 쓰레드에서 실행되어, 델파이로 자바 UI 코드 작성 시 쓰레드 동기화가 필요 없습니다. CallUIThread 메소드는 이제 더이상 사용되지 않습니다.

10.1 베를린 이전 procedure ToastMessage(const AValue: string);
begin
CallInUiThread(procedure
begin
TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(AValue), TJToast.JavaClass.LENGTH_SHORT).show;
end);
end;
10.2 도쿄 이후 procedure ToastMessage(const AValue: string);
begin
TJToast.JavaClass.makeText(SharedActivityContext, StrToJCharSequence(AValue), TJToast.JavaClass.LENGTH_SHORT).show;
end;

□ TBitmap, TCanvas 및 TContext3D에 대한 멀티 스레딩 지원

  • TBitmap : 완벽한 멀티 스레딩 지원. 동기화없이 모든 스레드에서 생성, 삭제 및 수정할 수 있습니다.
  • TCanvas : 한 번에 여러 스레드에서 사용되는 것을 지원하지만 내부적으로 직렬화됩니다.
  • TContext3D : 한 번에 여러 스레드에서 사용되는 것을 지원하지만 내부적으로 직렬화됩니다.

 

□ 기타 FireMonkey 변경 사항

  • TagObject 및 TagString 속성을 TListViewItem에 추가했습니다.
  • TStringGrid 이벤트를 다시 노출했습니다
  • TText, TStyleTextObject, TActiveStyleTextObject, TTabStyleTextObject 및 TButtonStyleTextObject와 같은 텍스트 컨트롤에 ICaption에 대한 지원이 추가되었습니다.
  • Windows 용 TWebBrowser에 대한 FMX 개선
  • TEdit에 CharCase 속성이 추가되었습니다.
  • FMX.Platform.Android.pas 향상
  • TForm의 Release 메소드는 더 이상 사용되지 않습니다.
  • 안드로이드에서 ShowModal의 변경.

 

□ 새롭게 추가된 파이어몽키스타일

맥 및 안드로이드용 새로운 파이어모몽키 스타일이 추가되었습니다. 다음 위치에서 새로운 스타일을 확인 할 수 있습니다.

  • C:\Users\Public\Documents\Embarcadero\Studio\19.0\Styles\MacOS\macOSgraphite.fsf
  • C:\Users\Public\Documents\Embarcadero\Studio\19.0\Styles\Android\AndroidWearDarkBlue.fsf

자세히 보기: https://tech.devgear.co.kr/delphi_news/431389

RAD서버 업데이트

□ [10.2] RAD 서버 싱글 사이트 라이선스 제공

10.2.2에서 RAD 서버 싱글 사이트 라이선스를 제공합니다.(RAD 스튜디오, 델파이, C++빌더 엔터프라이즈 및 아키텍트 에디션에만 포함)

RAD 서버는 즉시 사용가능한 턴키방식의 미들웨어 서버입니다. 주요 기능으로 범용적인 REST API 개발해 서비스 할 수 있으며, 엔터프라이즈 데이터베이스 제공, 통합 미들웨어 역할 수행, IoT 엣지웨어(사물인터넷 정보 수집) 등의 기능과 서비스를 모니터링 및 관리할 수 있는 웹 콘솔 서비스를 제공합니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/438369

IDE 업데이트

□ [10.1] 폼 디자이너 분리

델파이7 등과 같이 폼 디자이너 화면 여러개를 동시에 보고, 편집할 수 있습니다. 이제 멀티 모니터를 더욱 적극적으로 활용할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/421500

 

□ [10.1] 설치 작업 개선

설치 시 개발에 필요한 플랫폼과 언어를 선택할 수 있습니다.

 

□ [10.1] ListView 레이아웃을 입맛에 맞게 변경할 수 있습니다.

ListView는 미리 정의된 외관(Appearence)을 이용해 항목을 구성하기 때문에, 많은 데이터를 아주 빠르게 스크롤 할 수 있습니다.

RAD스튜디오 10.1 베를린에서는 ListView 아이템 디자이너가 개선되며, ListView 아이템의 레이아웃을 변경할 수 있는 디자인 모드가 추가되었습니다.

 

□ [10.1] Dynamic Apprearance

ListView 컴포넌트의 ItemAppearance 속성 중 DynamicAppearance를 선택하면, 원하는 ListView 아이템의 하위 객체를 추가할 수 있습니다. 추가된 항목은 DesignMode에서 위치 및 크기 등을 조정해 원하는 레이아웃을 구성할 수 있습니다.

 

□ [10.1] Dialog 사용법이 상당 부분 변경되고, 기능이 추가되었습니다.

메소드 변경

많이 사용하는 MessageDlg, ShowMessage, InputBox, InputQuery 등이 새로운 메소드로 많이 변경되었습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/422020

 

□ [10.1] 버퍼를 이용한 파일 스트림 – TBufferedFileStream

TBufferedFileStream을 이용해 TFileStream 보다 더 빠르게 파일을 읽고 쓸 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/422069

 

□ [10.1] GetIt 속성 관리

새로운 프로젝트 옵션 페이지에서 GetIt(겟잇) 속성을 관리할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/422726

VCL 업데이트

□ [10.1] 리본 컨트롤을 겟잇 패키지 매니저에서 설치할 수 있습니다.

리본 컨트롤 설치

겟잇 패키지 매니저에서 리본 컨트롤(Ribbon Control)을 검색해 다운로드 받을 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/422522

 

□ [10.1.2] 윈도우 10 캘린더 활용

추가된 캘린더 컴포넌트(2종)을 이용해 윈도우10 룩앤필을 제공할 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/427301

□ [10.1] 리본 컨트롤을 겟잇 패키지 매니저에서 설치할 수 있습니다.

리본 컨트롤 설치

겟잇 패키지 매니저에서 리본 컨트롤(Ribbon Control)을 검색해 다운로드 받을 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/422522

□ [10.1] 윈도우 태스크바 알림 뱃지 제어

자세히 보기: https://tech.devgear.co.kr/delphi_news/425596
□ [10.1.2] 윈도우 10 캘린더 활용

추가된 캘린더 컴포넌트(2종)을 이용해 윈도우10 룩앤필을 제공할 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/427301

 

□ [10.1.2] 퀵에디트(Quick Edit) 메뉴 사용하기

새로 추가된 퀵 에디트 메뉴를 통해 손쉽고, 빠르게 화면을 제작할 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/427298

 

□ [10.1.2] 윈도우 10 스타일 3종(다크블루, 그린, 퍼플)

자세히 보기: https://tech.devgear.co.kr/delphi_news/427295

 

□ [10.1.2] 데스크탑 브릿지 기술을 이용해 윈도우 10 스토어에 배포

자세히 보기: https://tech.devgear.co.kr/delphi_news/427290

RTL 업데이트

□ [10.1] 윈도우10에서 블루투스 LE와 비콘 지원

새로운 WinRT 블루투스 API가 제공되어, 윈도우10에서도 블루투스LE와 비콘을 활용할 수 있습니다:

  • 데이터 값이 들어오면 알려줄 BLE 디바이스 스캔 기능
  • BLE를 통해 들어오는 데이터 값 송수신 기능
  • iBeacon, AltBeacon 포맷 사용 기능

자세히 보기: https://tech.devgear.co.kr/delphi_news/422711

 

□ [10.1] Eddystone Beacon 포맷 지원

아래 3개 타입을 활용할 수 있습니다:

  • EddystoneUID: 네임스페이스(Namespace)와 인스턴스(Instance)로 구성된 식별자 정보 제공
  • EddystoneURL: 압축된 형식의 URL 제공
  • EddystoneTLM: 비콘 동작 상태 관련 원격 정보 제공

자세히 보기: https://tech.devgear.co.kr/delphi_news/422713

FMX(파이어몽키) 업데이트

□ [10.1] FireUI 앱 미리보기

개발중인 앱 화면을 각 디바이스에서 실시간으로 확인하며 개발할 수 있습니다.

 

□ [10.1] 연락처 컴포넌트(TAddressBook)

  • 연락처 컴포넌트로 연락처 정보를 읽고 쓸 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/421632

 

□ [10.1] 스타일 디자이너(Style Designer) 개선

스타일 디자이너에 미리보기, 클립보드 기능 등이 강화되어 더욱 사용하기 편리해졌습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/421717

 

 

□ [10.1.1] iOS 32비트 디버거 핫픽스

iOS 32 비트 타겟으로 빌드 후 디버깅이 되지 않는 이슈를 해결합니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/428450

 

□ [10.1.1] TGrid 네이티브 렌더링 지원 – iOS

TGrid의 ControlType 속성을 변경해 스타일과 플랫폼 렌더링을 선택할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/425609

 

□ [10.1.1] 갤럭시 S7 Edge(안드로이드 6.0.1) 디버깅 이슈 해소

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/422527

IDE 업데이트

□ [10] IDE 메모리 개선

RAD Studio IDE 메모리가 개선되어 더 큰 프로젝트를 더 빠르게 코딩하고 컴파일 할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/416097

 

□ [10] 고해상도 모니터와 멀티 모니터 지원

4K 고해상도 모니터를 지원하고 모니터 당 DPI로 멀티 모니터를 지원합니다.

 

□ [10] 멀티-모니터 지원 강화

이제 여러개의 모니터를 활용해 개발환경 레이아웃을 구축해 개발 효율성을 극대화 할 수 있습니다.

 

□ [10] IDE 생산성 기능 추가

20개 이상의 IDE 생산성 기능들이 내장되어 생산성, 품질, 안정성이 향상됩니다.

 

□ [10] 겟잇(GetIt) 라이브러리 확장

비콘펜스(BeaconFence)등 새로운 오픈 소스와 컴포넌트 패키지를 IDE에서 직접 확보할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/415122

 

□ [10] 저장되지 않은 파일 자동 복구

시스템 충돌 등으로 비정상적으로 IDE가 종료되는 경우 IDE는 사용자의 저장하지 않은 작업을 복구를 지원합니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/416073

VCL 업데이트

□ [10] 윈도우 10 VCL 컨트롤

윈도우 10 용 새 VCL 컨트롤을 이용해 윈도우 10 UI를 손쉽게 적용할 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/414834

 

□ [10] TSplitView

윈도우 10 시작 메뉴에서 사용하는 일명 햄버거 메뉴 형태 구현에 용이합니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/414834

 

□ [10] 윈도우 10 스타일 지원

VCL 스타일을 적용해 1분만에 윈도우 10 최신신 룩앤필을 적용할 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/414848

□ [10] 공용 대화 상자와 웹브라우저에도 VCL 스타일 적용

VCL 스타일이 공용 대화 상자와 웹브라우저에도 적용됩니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/414855

□ [10] 윈도우 10 서비스 활용
알림, 계약(Contract) 등의 윈도우 10 플랫폼 서비스 기능을 컴포넌트와 API로 쉽게 활용할 수 있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/414873

RTL 업데이트

□ [10] JSON과 BSON 스트림

JSON 데이터를 DOM 모델이 아닌 스트리밍 모델로 읽고, 쓸수있습니다.

자세히 보기: https://tech.devgear.co.kr/delphi_news/416103

 

□ [10] FireDAC NoSQL 드라이버로 몽고DB 지원

몽고DB는 가장 인기 있는 NoSQL 데이터베이스입니다. FireDAC 기능 향상에는 API 맵핑, 데이터 처리, JSON과 BSON 포맷 지원 (새 RTL) 등이 있습니다.
자세히 보기: https://tech.devgear.co.kr/delphi_news/415015

FMX(파이어몽키) 업데이트

□ [10] iOS 64-bit 디버깅

iOS 64-bit와 유니버설 앱을 만들고 디바이스에서 디버깅할 수 있습니다.

 

□ [10] 파이어몽키 스타일 디자이너 강화

  • 내장된 파이어몽키 스타일 디자이너가 강화되어, 스타일북 컴포넌트에 여러가지 플랫폼 스타일을 담을 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/415102

 

□ [10] 윈도우 10용 FMX 강화

롤오버 되는 컨트롤 힌트, TEdit, TMemo 용 플랫폼 네이티브 렌더링, ZOrder 강화, 멀티뷰 업데이트(윈도우 10 용), 스위치 컨트롤, 이미지를 지원하는 클립보드 등

자세히 보기: https://tech.devgear.co.kr/delphi_news/415125

 

 

□ [10] 파이어몽키 네이티브 윈도우 컨트롤

TEdit, TMemo, TPresentedScrollBox(신규) 세가지 컨트롤을 파이어몽키 스타일과 네이티브로 렌더링 할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/415125

 

□ [10] 안드로이드 서비스 개발

안드로이드 서비스 앱을 개발하면 안드로이드 OS에서 백그라운드 작업을 실행할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/415128

 

□ [10] 안드로이드 인텐트 강화
모든 종류의 인텐트 액션을 처리할 수 있도록 애플리케이션을 등록할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/416115

 

□ [10] TBeaconDevice 컴포넌트
블루투스 LE를 지원하는 장치(디바이스)에서 비콘의 광고데이터 신호를 발생할 수 있습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/416134

 

□ [10-핫픽스] OS X 앨 캐피탠(El Capita: 10.11)에 맞춘 PAServer 핫픽스
이번 핫픽스에서는 OSX 엘 캐피탠 지원과 iOS SDK 호환성 업데이트가 추가되었습니다.

  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/415998

언어와 컴파일러 업데이트

□ [10] 표준 C++11이 Win32에도 적용

여러분의 기존 윈도우 앱을 C++11으로 가져오세요. C++11을 준수하는 새 32-bit 윈도우 컴파일러와 클래식 bcc32 컴파일러를 같은 윈도우 프로젝트에서 손쉽게 바꾸어 반영할 수 있습니다.

IDE 업데이트

□ [XE8] 코드를 분석하고 더 좋은 품질의 코드를 만들 수 있습니다.

코드 품질을 추적하는 코드 분석기

코드의 라인 수, 파라미터의 수, 중첩된 구문들, 순환 복잡도(Cyclomatic Complexity) 등
여러 가지 코드 분석 통계를 제공합니다.

 

□ [XE8] 여러분의 개발 패턴을 파악하고 개발 생산성을 높일 수 있습니다.

개발자에게 프로젝트 통계 제공

 

 

 

 

 

 

활동 추적을 통해 생산성의 명확한 그림을 제공합니다.

 

□ [XE8] 번거로운 컴포넌트 검색과 설치를 손쉽게 할 수 있습니다.

겟잇(Getit)-패키지 관리자

겟잇 패키지 매니저는 번거로운 컴포넌트 검색과 설치 과정을 간편하게 만들어주는 기능입니다. 소스코드 라이브러리, 컴포넌트와 기타 기능들을 엠바카데로 갯잇 서버에서 손쉽게 찾고, 다운로드 받고 업데이트할 수 있습니다.

사용 방법: 아래 경로로 메뉴를 들어가 사용할 수 있습니다.

 

□ [XE8] 클립보드 이력을 보관하므로 이전에 복사했던 내용도 붙여넣기 할 수 있습니다.

클립보드 히스토리

클립보드 히스토리는 클립보드에 복사했던 데이터를 목록 제공해 다시 사용할 수 있는 기능입니다.

클립보드 데이터는 클립보드로 복사 시 이전의 클립보드 내용이 없어져 복사 > 붙여넣기를 반복해야 했는데요. 클립보드 히스토리에는 총 10개의 클립보드 데이터 이력을 제공해 개발작엡의 생산성을 작게나마 높여줍니다.

데이터를 클립보드로 다시 복사하는 Copy to clipboard와 코드 에디터로 데이터를 입력하는 Insert in Editor 2가지의 기능을 제공합니다.

자세한 내용은 카스탈리아 기술문서: Clipboard History를 참고하시기 바랍니다.

 

□ [XE8] 동일한 붙여넣기를 여러 소스코드 줄에 한번에 붙여 넣을 수 있습니다.

다중 붙여넣기

 

□ [XE8] 코드흐름과 중단되는 지점을 한눈에 파악할 수 있습니다.

코드 흐름 강조

코드를 건너뛰는 흐름을 코드 에디터 안에서 눈에 띄도록 표시

 

□ [XE8] 복잡한 For문, If문의 시작과 끝을 한눈에 알아볼 수 있습니다.

구문 강조표시

구문의 구조가 바로 파악되도록 표시

 

□ [XE8] 유닛 테스트 마법사를 통해 쉽고 빠르게 유닛테스트와 유닛테스트 프로젝트를 만들 수 있습니다.

유닛 테스트 도구 – DUnitX

File > New > Other > Delphi Projects > DUnitX로 이용할 수 있습니다.

 

□ [XE5] 마이그레이션 도구를 통해 컴포넌트 변경, 속성변경, uses절 정리 등의 수작업을 줄여줍니다.

reFind.exe 마이그레이션 시 수작업을 줄여주는 도구

reFind는 정규표현식 패턴을 이용해 텍스트파일의 문자열을 찾아 바꿔주는 커맨드라인 도구입니다. reFind는 델파이 소스코드(*.PAS)와 폼파일(*.dfm, *.fmx)의 속성과 유닛명을 일괄적으로 치환(replace)하거나 제거 할 수 있어 마이그레이션의 수작업을 대폭 줄여줍니다.

 

□ [XE5] RESTful 방식의 웹서비스를 분석하고 분석내용이 포함된 컴포넌트를 복사하면 웹서비스 연동 애플리케이션을 신속하게 개발할 수 있습니다.

REST 디버거: RESTful 방식의 웹서비스를 분석하는 도구

RESTful 방식의 웹서비스에 요청, 응답, 인증, 연결 정보를 입력하면, 웹서비스 인터페이스를 분석하고 확인하는 도구입니다. 원하는 웹서비스를 확인했다면 ‘Copy Component’ 버튼을 클릭한 후, 델파이 프로젝트에서 붙여넣기만 하면 웹서비스의 결과를 델파이 프로젝트에서 로컬 데이터셋처럼 바로 사용할 수 있습니다.
REST 디버거는 Tools > REST Debugger 메뉴로 이용할 수 있습니다.

 

□ [XE] SVN, Git, Mercurial의 버전 관리 저장소에 연결하여 IDE 안에서 직접 체크

버전관리 컨트롤이 IDE 안에 통합됨

File > Open From Version Control 메뉴에서 소스 코드 저장소에 바로 연결할 수 있습니다.

 

VCL과 RTL 업데이트

□ [XE8] 근거리 위치기반 사물인터넷 서비스를 개발할 수 있습니다.

비콘

이제 비콘 컴포넌트(TBeacon)을 이용해 근거리 위치기반 서비스를 개발할 수 있습니다. 비콘은 일정 주기로 비콘식별정보와 거리를 계산할 수 있는 작업 데이터를 주변으로 송출하는 장비입니다.

비콘은 iBeacon과 AltBeacon 2가지의 표준을 제공하며 델파이의 TBeacon 컴포넌트는 iBeacon과 AltBeacon을 모두 지원하며, 비콘 영역의 입출입, 근접한 비콘의 정보 등을 이벤트로 제공해 비콘을 이용한 사물인터넷 서비스를 개발할 수 있습니다

자세히 보기: https://tech.devgear.co.kr/delphi_news/410888

 

 

 

 

□ [XE7] 블루투스를 이용해 원격의 장치와 센서 등을 여러분의 앱과 연결할 수 있습니다.

클래식 블루투스, 블루투스LE 컴포넌트

블루투스를 이용해 원격의 장치와 연결하고 원격 애플리케이션과 데이터를 주고 받을 수 있습니다. 델파이는 클래식 블루투스 컴포넌트와 블루투스 LE(저전력) 컴포넌트를 각각 제공합니다.

 

□ [XE7] 윈도우 작업표시줄 아이콘의 팝업메뉴 안에 바로가기 메뉴를 추가할 수 있습니다.

TJumpList 컴포넌트

 

□ [XE7] 멀티코어 CPU를 최대한 활용하여 성능이 높은 애플리케이션을 개발할 수 있습니다.

병렬 컴퓨팅 라이브러리 지원

델파이는 멀티코어 CPU 장비의 성능을 최대한 활용할 수 있도록 병렬 컴퓨팅 라이브러리를 이용할 수 있습니다.
• 멀티코어 CPU를 최대한 활용할 수 있도록 다수의 CPU에서 병렬(페러럴)로 작업
• 비동기 연산작업에 사용되어 멀티코어 컴퓨터와 장비 최대한 활용 가능
• 기존 코드에 손쉽게 통합하도록 라이브러리 형태로 지원

 

□ [XE6] 윈도우 작업표시줄 아이콘에 애플리케이션 미리보기와 제어버튼, 진행률을 표시할 수 있습니다.

TTaskBar 컴포넌트

 

□ [XE6] VCL 애플리케이션에 있는 데이터를 손쉽게 모바일 앱으로 확장할 수 있습니다.

VCL 앱을 모바일앱으로 확장할 수 있는 앱테더링 컴포넌트

앱테더링은 VCL 애플리케이션과 모바일앱이 상호 커뮤니케이션 할 수 있도록 지원하는 컴포넌트입니다.
앱테더링을 이용하면, 기존의 윈도우 애플리케이션의 기능을 모바일 앱으로 확장할 수 있습니다.

 

□ [XE5] 새로운 양방향 데이터셋으로 멀티-디바이스 데이터 액세스 애플리케이션 개발이 더 쉽고 재미있어 집니다.

FireDAC – 범용 데이터 액세스 컴포넌트

다양한 데이터베이스를 제어할 수 있는 통합 API를 제공합니다. 데이터베이스 별 고유 기능을 사용하고, 최적의 성능을 발휘할 수 있도록 DBMS 별 네이티브 데이터베이스 드라이버를 지원합니다.

 

□ [XE5] FireDAC으로 데이터 사용 내역을 추적하고 모니터링 할 수 있습니다.

FireDAC 추적과 모니터링

FireDAC의 추적기능을 이용하면 애플리케이션과 데이터베이스 사이의 통신내용을 상세하게 보거나 기록할 수 있습니다. 이 추적 정보에는 이벤트 발생시간, API 호출내역, DB로 전송된 SQL, 파라메터와 필드 값, 오류와 경고 등이 기록되어 여러분의 DB 애플리케이션의 문제점을 디버깅하고 해결하는데 유용하게 사용할 수 있습니다.

 

□ [XE5] FireDAC에서는 데이터 변경 사항을 메모리에 캐쉬하여, DBMS에 일괄 업데이트, 취소할 수 있습니다.

FireDAC – 캐쉬를 이용한 업데이트

캐쉬 업데이트는 애플리케이션의 메모리 영역(즉, 데이터셋)에 업데이트 내역을 기록하고, DBMS에 한번에 업데이트하거나 일괄취소할 수 있는 기능입니다. 캐쉬 업데이트를 사용
하면 작업내용을 로컬에서 관리하므로 DBMS와의 트래픽을 줄일 수 있고, 사용자는 인터넷 속도와 관계없이 빠르게 작업할 수 있습니다. 그리고 부가적으로 작업이력을 확인(변경된 레코드 조회, 변경된 값 확인 등)하고, 작업을 되돌리는 기능(최종작업 되돌리기, 선택 레코드 되돌리기 등)등이 메소드를 이용해 손쉽게 구현할 수 있습니다.

 

□ [XE5] 30배 빠르게 복수의 데이터를 입력할 수 있습니다.

FireDAC – Array DML

FireDAC의 Array DML은 쿼리 전송 시 매개변수(Parameters)를 배열을 이용해 한번에 DBMS로 전달해 데이터 입력, 수정, 삭제 명령의 실행속도를 빠르게 하는 기능입니다. 이 방법은 DBMS와 애플리케이션 사이의 통신비용을 줄이고 DBMS 명령 요청을 줄입니다. 그 결과 실행 속도가 향상됩니다.

 

□ [XE5] 쿼리의 결과가 많은 경우 일부 데이터만 가져오는 작업을 옵션 설정만으로 구현할 수 있습니다.

FireDAC 캐스캐이딩 옵션

FireDAC은 FetchOptions(DBMS에서 데이터를 어떻게 취득할지 제어하는 검색옵션), FormatOptions(DBMS의 데이터형식을 FireDAC 데이터형식으로 또는 반대로 매핑하는 형식옵션), UpdateOptions(DBMS 업데이트 전송방법을 제어하는 업데이트 옵션), ResourceOptions(시스템 리소스 사용과 데이터셋의 지속성을 제어하는 자원 옵션), TxOptions(트랜젝션 실행방법을 제어하는 트랜젝션 옵션)을 이용해 다양한 방식으로 기능과 성능을 제어할 수 있습니다.

 

□ [XE5] 오라클과 SQL서버, MySQL에서 모두 돌아가는 유연한 쿼리를 만들 수 있습니다.

FireDAC 커맨드 텍스트 전처리

커맨드 텍스트 전처리는 SQL 명령을 데이터베이스에 전달하기 전 파라메터를 치환하고, FireDAC 매크로 함수를 DBMS에 맞도록 치환할 수 있습니다. 대체변수(파라메터 확장을 위해 SQL 문의 일부를 치환), 이스케이프 시퀀스(한번 작성하면 서로 다른 DBMS에서 그대로 사용할 수 있는 DBMS에 의존적이지 않은 SQL문 생성), 조건부 대체(연결된 DBMS에 따라 조건부로 실행되는 SQL 문 작성)를 사용할 수 있습니다.

 

□ [XE5] 데이터베이스 내용을 엑셀 형식의 CSV 파일로 내보내고 가져오는 기능을 구현할 수 있습니다.

FireDAC ETL

FireDAC의 ETL은 Extract, Transform, Load의 약자로 아래 역할을 합니다.
• Extract(추출) : 같은 종 또는 이기종 데이터 소스로부터 데이터를 추출
• Transform(변환) : 쿼리 또는 분석하기 위한 데이터로 저장하기 위해 적절한 포맷과 구조로 변환
• Load(로드) : 최종 목적(데이터베이스, 더 구체적으로, 운용 데이터 저장소, 데이터 마트, 또는 데이터 창고)으로 로드


FireDAC ETL로 아래의 기능을 구현할 수 있습니다.
• Query문으로 조회한 데이터를 엑셀에서 사용할 수 있는 CSV 파일로 내보내기
• 텍스트파일의 데이터를 데이터베이스 테이블로 가져오기
• 데이터베이스에서 다른 데이터베이스로 데이터 이동하기

 

□ [XE5] 데이터베이스에 연결하지 않고, 메모리 데이터셋에 대해 필터링 정렬 등을 사용할 수 있습니다.

FireDAC – TFDMemTable

TFDMemTable은 메모리 기반 데이터셋입니다. 즉, 데이터베이스 연결 없이 파일 데이터나 코드로 추가한 데이터를 메모리에 올려 데이터셋의 기능(필터링, 정렬 등)을 사용할 수 있습니다. TFDMemTable은 아래 기능을 할 수 있습니다.

  • 디자인타임과 런타임 시 파일 불러오기(Load File), 파일로 내보내기(Save File), 다른 데이터셋의 데이터가져오기(Assign Data) 기능 사용
  • 런타임 시 파일과 스트림으로 데이터 내보내기, 불러오기 기능을 사용할 수 있으며, JSON, XML, Binary 포맷 선택 가능
  • 멀티티어 애플리케이션(REST 클라이언트, 데이터스냅 등)에서 수신 데이터를 보관하는 데이터셋 역할
  • 내부에서 데이터 보관할 시 컬랙션객체(TList, TStringList) 대신 메모리테이블 사용 시 데이터셋의 기능(UI 컨트롤에 데이터바인딩, Local SQL, 필터링, 정렬 등)을 사용해 다양한 기능 손쉽게 구현 가능
  • Local SQL을 이용해 메모리테이블(데이터셋)에서 쿼리 실행
  • ETL 기능으로 다른 데이터소스(텍스트, CSV 등)에서 가져온 데이터 보관
  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/410575

 

□ [XE5] DB에서 가져온 데이터를 대상으로 다시 SQL 쿼리를 실행할 수 있습니다.

FireDAC – LocalSQL

Local SQL은 DB로부터 애플리케이션의 메모리 상으로 가져온 데이터(데이터셋: TDataSet을 상속받은 객체)를 대상으로 다시 SQL 쿼리를 할 수 있는 기능으로 아래와 같이 사용할 수 있습니다.

  • 여러 이기종 DB들에 대한 쿼리 : 다양한 DB에서 가져온 여러 데이터셋을 대상으로 원하는 데이터 쿼리(조인 가능)
  • 인 메모리 데이터베이스 : TFDMemTable은 메모리상에 있는 데이터셋의 역할
  • 오프라인 모드 쿼리 : 원격 DB에 연결할 수 없는 경우에도, 이미 가져온 데이터셋을 대상으로 쿼리 실행
  • 데이터스냅 클라이언트 쿼리 : 데이터스냅 서버(미들웨어)에서 받아온 데이터셋을 대상으로 쿼리 실행
  • 간편한 마이그레이션 : 애플리케이션 내에서 써드파티를 통해 가져온 데이터셋 객체를 대상으로 쿼리 실행
  • 자세히 보기: https://tech.devgear.co.kr/delphi_news/410465

 

□ [XE3] 윈도우8의 메트로 UI 모양과 느낌의 애플리케이션을 개발 할 수 있습니다.

메트로 UI 애플리케이션 개발

화면 터치에 최적화된 메트로 UI 애플리케이션을 만들 수 있습니다.
File > New > Other 메뉴에서 Delphi Project > VCL Metropolis UI Application 으로 메트로 UI 애플리케이션 개발을 시작할 수 있습니다.

 

□ [XE2] VCL 애플리케이션의 외관을 멋진 현대식 스타일을 적용할 수 있습니다.

VCL 스타일

VCL 스타일은 VCL 애플리케이션의 모든 컨트롤, 폼의 테두리, 메뉴, 시스템 메뉴까지 일관되게 현대식 스타일을 적용할 수 있습니다. 별도의 코드 추가나 컴포넌트 추가 없이 프로젝트 옵션의 Appearance 화면(Project > Options > Application > Appearnace)에서 스타일 선택 및 적용할 수 있습니다.

 

 

□ [XE2] 여러분만의 VCL 스타일을 만들 수 있습니다.

Bitmap Style Designer

Bitmap Style Designer는 VCL과 파이어몽키 스타일 파일 저작 도구입니다. File > New > VCL Style 메뉴로 새로운 스타일을 만들거나, Open 메뉴로 기존의 스타일 파일을 불러와 편집해 새로운 스타일 파일을 만들 수 있습니다.
Tools > Bitmap Style Designer 메뉴를 통해 사용할 수 있습니다.
(기본 제공되는 VCL 스타일 파일의 경로는 C:\Users\Public\Documents\Embarcadero\Studio\16.0\Styles(XE8 기준) 입니다.)

 

 

 

□ [XE] 정규표현식을 이용하는 프로그램을 개발할 수 있습니다.

TRegEx 클래스로 정규표현식 지원

TRegEx 클래스를 이용해 정규표현식을 지원합니다.

 

 

새로운 언어와 컴파일러 기능 업데이트

□ [XE7] 동적배열을 문자열과 같이 쉽게 사용할 수 있습니다.

동적배열 개선

• 동적배열 초기화가 쉬워짐
• 문자열과 같이 + 기호로 배열을 연결
• Insert, Delete, Concat 함수 지원

var
 di: array of Integer;
 i: Integer;
begin
 di := [1, 2, 3]; 
 di := di + di;
 di := di + [4, 5];




 di := [1, 2, 3, 4, 5, 6];
 Insert ([8, 9], di, 4);
 Delete (di, 2, 1); // remove the third (0-based)


 for i in di do
 begin
   Memo1.Lines.Add (i.ToString);
 end

 

 

□ [XE2] 64비트 애플리케이션을 개발할 수 있습니다.

64-비트 컴파일러 지원

델파이 XE2에서 64비트 윈도우 애플리케이션 개발을 지원합니다. 64비트 애플리케이션은 더 빠른 연산과 더 많은 메모리(4G 이상)를 사용해야 하는 경우 적합 합니다.
델파이에서는 프로젝트 매니저에서 타겟 플랫폼을 64-bit Windows로 선택 후 빌드해 64비트 애플리케이션을 개발할 수 있습니다. 만약, 여러분의 프로젝트가 VCL과 RTL만 사용한 경우 Win32와 Win64 플랫폼에서 동일한 소스코드를 사용할 수 있습니다.

 

□ [XE2] 유닛에 범위 이름을 포함해 더 명확한 유닛 이름으로 지정할 수 있습니다.

유닛 범위 이름(Unit Scope Names)

유닛 이름 앞에 범위 이름을 추가할 수 있어 유닛의 역할이 더 명확해 졌습니다. VCL과 RTL 유닛이 모두 범위이름을 포함하도록 변경되었고 여러분의 유닛에도 범위이름을 포함해 저장할 수 있습니다.
하지만 반드시 범위이름을 지정해야 하는 것은 아닙니다. 유즈절에 유닛을 추가할 때 System.SysUtils와 SysUtils는 동일한 유닛을 사용합니다.

 

IDE 업데이트

□ [2010] IDE의 모든 기능을 편리하고 신속하게 바로 찾아서 사용할 수 있습니다.

IDE 인사이트

단축키 F6(또는 Ctrl + .)을 누르면 IDE Insight 필터링 검색창으로 포커스가 옮겨집니다. 여기에 원하는 기능을 입력하면 입력한 글자가 포함된 “컴포넌트, 코드 템플릿, 프로젝트, 옵션” 등의 기능이 목록으로 표시됩니다.
원하는 기능을 선택하면 바로 실행되거나 IDE에서 관련 화면으로 이동합니다.

 

□ [2010] 여러 디렉토리에서도 한번에 원하는 내용을 검색할 수 있습니다.

개선 Find in Files

 

□ [2010] 규모가 큰 프로젝트를 컴파일 하면서, 동시에 IDE에서 계속 작업할 수 있습니다.

백그라운드 컴파일

컴파일 시간이 오래 걸리는 대형 프로젝트 컴파일 작업을 위해 백그라운드 컴파일 기능이 추가되었습니다. 이 기능을 이용하면 컴파일 하는 동안 코드 에디트, 리뷰 등 다른 작업들을 계속할 수 있습니다. 유닛들의 스냅샷을 컴파일 하기 직전에 메모리에 올려서 컴파일하므로 컴파일 도중에 코드를 수정하더라도 컴파일에 영향을 주지 않습니다.

 

□ [2009] 유사한 프로젝트 옵션끼리 재분류되어 옵션을 더 빠르고, 쉽게 찾을 수 있습니다.

개선된 프로젝트 옵션

 

□ [2009] 개발용 프로젝트 옵션과 배포용 프로젝트 옵션을 다르게 설정할 수 있습니다. 파일로 저장해 두면 재사용 할 수 있습니다.

빌드 컨피그레이션

 

빌드 컨피그레이션은 디버그 또는 릴리즈 모드에 따라 프로젝트 옵션을 별도로 설정하는 기능입니다. 별도로 설정된 옵션 값은 프로젝트 매니저의 빌드 컨피그레이션의 선택에 따라 디버그 또는 릴리즈 설정 정보를 포함해 앱이 만들어 집니다.
빌드 설정은 별도 옵션셋 파일(*.optset)로 저장됩니다. 이 파일을 불러오면 다른 프로젝트에서 옵션 설정 정보를 재사용할 수 있습니다

 

□ [2009] 리소스 파일이 필요한 경우, 프로젝트에서 바로 추가해서 사용할 수 있습니다.

리소스 파일을 관리할 수 있는 리소스 매니저

 

델파이 7에서는 별도의 이미지나 폰트파일 등의 리소스를 프로젝트에 추가하려면 리소스 스크립트 파일(*.rc)을 직접 만들어 프로젝트에 추가해야 했습니다. 이제 리소스 매니저(Project > Resources and Images…)를 이용해 리소스 파일을 추가하고 프로젝트를 컴파일 하면 리소스 스크립트 파일이 자동으로 생성됩니다.

 

□ [2009] 필터링 검색기능을 사용하면 강화로 uses절 추가가 훨씬 쉬워집니다.

Use Unit

 

File > Use Unit(Alt + F11)로 Use Unit 창을 호출하고 입력창에서 필터링 검색을 하면 유즈절에 추가할 파일을 손쉽게 찾을 수 있습니다. 등록 영역(Interface / Implementation)을 선택하기도 쉽습니다.

 

□ [2007] 툴팔레트에서도 필터링 검색으로 컴포넌트를 빠르게 찾을 수 있습니다.

툴팔레트 검색

 

툴파레트 검색창에 입력된 내용이 포함된 컴포넌트만 목록에 표시됩니다.

 

□ [2005] 자주 사용하는 코드를 템플릿에 미리 등록해두면, 코드를 빠르게 완성할 수 있습니다.

라이브 템플릿

  

라이브 템플릿은 템플릿(View > Templates)에 정의된 템블릿 코드를 이용해 코드의 뼈대를 자동으로 만들고 입력항목을 추가해주기 때문에, 코드를 빠르게 완성할 수 있습니다.
탭키로 입력항목을 넘나들고, 엔터키를 눌러 입력을 완료합니다.


템플릿 코드는 View > Templates 메뉴를 통해 관리할 수 있습니다. 여러분이 자주 사용하는 코드를 기존 템플릿 코드를 참고해 추가하면 코딩 생산성을 높일 수 있습니다.

 

□ [2005] 선택된 여러줄의 코드를 한번에 주척처리하고 해제할 수 있습니다.

블록 커맨드

코드 에디터에서 여러줄 선택 후 Ctrl + / 로 주석, 주석 해제 할 수 있습니다.

 

□ [2005] 코드에디터에서 선택된 블록에서 같은 문자열을 한번에 변경할 수 있습니다.

Sync Edit 모드

  

코드 에디터에서 여러줄의 코드를 선택한 후 왼쪽에 표시된 연필두자루 아이콘을 클릭하면 Sync Edit 모드로 변경(선택한 코드 블록의 배경색 변경)됩니다. 문자열을 클릭하면 코드 블록내의 동일한 문자열에 모두 박스가 생기고 문자열 하나를 변경하면 박스 안의 같은 문자열이 모두 일괄적으로 함께 변경됩니다.

 

□ [2005] 코드 포맷이 맞지 않는 코드를 사전에 지정된 포맷으로 일괄 포맷적용 할 수 있습니다.

코드 포맷터

  

들여쓰기나 IF, FOR문의 begin…end, 줄바꿈 등의 코드 포맷을 지정된 포맷으로 일괄 적용할 수 있습니다.
• 현재 열려진 소스에 코드 포맷 적용 : View > Format 메뉴(또는 Ctrl + D)
• 프로젝트의 모든 소스코드에 코드 포맷을 한 번에 적용 : Project > Format project Sources…메뉴


환경설정(Tools > Options > Formatter)에서 원하는 소스포맷을 설정할 수 있습니다.
(델파이 XE 부터는 프로젝트의 모든 소스 코드에 코드 포맷을 한번에 적용하는 기능과 포맷 변경 전 확인 다이얼로그가 추가되었습니다.)

 

□ [2005] 변경된 코드 라인을 한눈에 알아볼 수 있습니다.

체인지 바

  

변경된 코드 영역을 라인번호 옆에 색깔로 표시해 줍니다. 변경이 저장된 경우 녹색으로, 저장 후 변경된 경우 노란색으로 표시됩니다.

 

□ [2005] 주요 코드에 집중할 수 있도록 코드를 접고 펼 수 있습니다.

코드 폴딩

  

 

 

□ [2005] 파일 저장 시 히스토리 파일이 생성됩니다. 이전 작업 내용과 변경된 부분을 비교하고 잘못 변경된 내용을 되돌릴 수 있습니다.

히스토리 관리자

  

히스토리 매니저는 IDE에서 관리하는 파일버전을 표시하고 서로 비교할 수 있습니다.
• IDE에서 저장하면 버전별로 히스토리 파일 생성
• 사용자의 로컬에 변경을 저장
• 작업 중인 파일에 대한 변경도 표시
코드에디터 하단의 History 탭에서 이용할 수 있습니다.

 

□ 프로젝트 그룹에서 프로젝트를 정렬할 수 있습니다. 오른쪽 마우스를 클릭하면 더 다양한 기능을 바로 사용할 수 있습니다.

프로젝트 매니저 강화

• 프로젝트 정렬 : 프로젝트와 프로젝트의 파일을 “이름, 수정일, 경로, 타입”으로 정렬
• 빌드 그룹 : 빌드 그룹에서 선택(체크)된 프로젝트를 일괄 빌드/컴파일
• 컨텍스트 메뉴에 여러 항목 추가됨 : 버전관리 기능 메뉴, 실행(Run, Run Without Debugging) 메뉴, Show in Explorer(프로젝트 경로의 탐색기 열기) 메뉴 등이 추가

 

□ Reopen 메뉴에 나타나는 항목들의 갯수를 조정하고, 불필요한 항목을 정리 할 수 있습니다.Reopen 메뉴 설정하기

리소스 파일을 관리할 수 있는 리소스 매니저 

열어본 프로젝트와 파일 표시 갯수와 불필요한 Reopen 항목을 정리 할 수 있습니다.

 

□ 코드 에디터 상에서 검색 결과가 강조되므로 한눈에 알아볼 수 있습니다.

검색 결과 하이라이팅

  

 

□ 리팩토링을 사용하면, 원래의 코드 동작을 유지하면서도, 코드의 구조를 재구성하고 코드의 성능과 가독성이 높아지도록 코드를 재구성할 수 있습니다.

리팩토링

  

리팩토링은 원래의 코드의 동작을 바꾸지 않고 그 코드를 다시 구성하거나 변경하는데 사용할 수 있는 기술입니다. 리팩토링을 이용하면 애플리케이션 코드의 성능과 가독성을 높여주고, 코드가 간결하고 깔끔해지도록 개선할 수 있습니다.

 

 

□ 프로젝트의 클래스 구조와 인터페이스를 한눈에 파악할 수 있습니다.

클래스 탐색기

  

View > Class Explorer 메뉴로 이용할 수 있습니다.

 

 

□ 데이터 탐색기에서 데이터베이스 연결을 쉽게 만들고 관리할 수 있습니다. 또한 데이터 소스를 프로젝트로 드래그 앤 드롭하여 DB 애플리케이션을 신속하게 개발할 수 있습니다.

데이터 탐색기

  

데이터 탐색기에서 테이블, 필드, 저장프로시저, 트리거, 인덱스와 같은 DB 서버 고유의 스키마 객체를 참조할 수 있습니다.
데이터 탐색기는 FireDAC 또는 dbExpress로 연결할 수 있습니다.

 

□ 컨트롤 위치 이동 시 정렬선이 표시되므로 배치와 정렬하기가 쉬워졌습니다.

VCL 가이드 라인

  

 

□ 다국어를 지원하는 국제화된 애플리케이션을 만들 수 있습니다.

다국어지원 도구: 국제화된 다국어 애플리케이션 만들기

  

다국어 지원을 위한 3가지 작업
• 다국어 지원할 언어 추가: Project > Languages > Add 메뉴를 통해 추가
• 화면의 문자열 다국어 처리 : 프로젝트 매니저에서 언어 리소스 편집
• 코드의 문자열 다국어 처리 : ResourceString 기반으로 문자열 사용 변경

VCL/RTL 업데이트

□ [2010] 경로, 파일, 디렉토리 관련된 함수 사용이 편리해 졌습니다.

System.IOUtils 클래스

TDirectory, TPath, TFile 등의 클래스들을 지원하여 로컬 디스크상의 디렉토리, 파일들을 훨씬 간단하게 검색, 액세스 가능합니다.

 

□ [2010] 키오스크나 태블릿 개발에 유용한 가상키보드를 개발할 수 있습니다.

TTouchKeyboard 컴포넌트

가상 키보드 컴포넌트인 TTouchKeyboard가 추가되어, 터치나 마우스 클릭으로 키 입력을 할 수 있게 되었습니다. 키오스크나 태블릿 개발에 아주 유용합니다. 터치키보드는 상속하여 간단히 원하는 언어 키보드를 구현할 수 있으며, 숫자 키패드로 바꿀 수도 있습니다.

 

□ [2010] TCanvas와 유사한 TDirect2DCanvas로 Direct2D 개발이 가능합니다.

Direct2D 지원

이제 델파이에서도 손쉽게 Direct2D 개발을 할 수 있습니다. 더욱이, 델파이 개발자들이 익숙한 TCanvas와 유사하게 TDirect2DCanvas로 만들어져 기존의 TCanvas로 개발해본 개발자라면 누구나 쉽게 배워 활용할 수 있습니다.

 

□ [2010] TIFF와 RAW 포맷을 이미지컴포넌트에서 사용할 수 있습니다.

TIFF 및 RAW 이미지 지원

WIC(Windows Imaging Components)를 지원함으로써, 스캐너, 팩스 등 수많은 분야에서 사용되는 범용 이미지 포맷 중의 하나인 TIFF를 직접 지원하게 되었습니다.
또한 최근 디지털 카메라에서 고급 이미지를 위해 많이 사용되는 RAW 포맷들도 WIC를 통해 지원하게 되었습니다.

 

□ [2009] MS 오피스와 같은 리본 인터페이스를 쉽게 개발할 수 있습니다.

리본 컨트롤

MS 오피스에서 도입된 리본컨트롤을 컴포넌트로 지원해, 다른 개발툴들처럼 복잡한 코딩 없이 폼 디자인만으로 간단히 리본 컨트롤을 추가하고 다룰 수 있습니다.

 

□ [2009] 컴포넌트 속성 설정만으로 멀티터치와 제스처를 구현할 수 있습니다.

멀티터치 / 제스처 지원

 

이제 델파이의 모든 컨트롤에서 터치 인터페이스를 지원하게 되었으며, 특히 특별한 코딩 없이 컴포넌트 수준의 설정만으로도 터치와 제스츄어를 지원합니다. 이를 위해 델파이 2010에서는 대부분의 VCL 컨트롤에서 Touch 속성이 추가되었으며, 여기서 지정된 GestureManager 컴포넌트를 통해 제스처도 지원됩니다. 기존 애플리케이션에도 간단히 터치 인터페이스를 추가할 수 있습니다.

 

 

델파이에서는 기본적으로 30개의 표준 제스처를 지원하며, 개발 중에 Custom Gesture를 추가하거나 혹은 런타임에 GestureRecorder 컨트롤을 이용하여 쉽게 사용자 제스츄어를 기록할 수 있습니다.

 

 

□ [2009] 비슷한 범주의 버튼을 그룹으로 묶어서 제공할 수 있습니다.

TButtonGroup 컴포넌트

비슷한 범주의 버튼을 그룹으로 묶어서 사용할 수 있습니다. 델파이 IDE의 툴 팔레트 카테고리 선택 UI도 TButtonGroup으로 제작되었습니다.

 

□ [2009] 에디터 컴포넌트에 이미지 버튼을 쉽게 넣을 수 있습니다.

TButtonEdit 컴포넌트

에디트 컴포넌트에 이미지 버튼을 가진 컴포넌트입니다. LeftButton, RightButton 속성에 이미지를 지정할 수 있으며 OnLeftClick, OnRightClick 이벤트로 클릭을 제어할 수 있습니다.

 

□ [2009] ListView의 그룹을 직접 설정하고, 그룹마다 이미지를 지정할 수 있습니다.

ListView 그룹화

 

 

□ [2009] 사용자 알림에서 제목, 설명과 이미지를 추가할 수 있습니다.

TBalloonHint 컴포넌트

 

□ [2009] 아웃룩의 사이드바와 같이 접었다 펴지는 UI를 구현할 수 있습니다.

TCategoryPanelGroup 컴포넌트

아웃룩의 사이드바와 같은 작업을 합니다. 여러개의 다른 패널을 추가할 수 있고 각기다른 패널에 VCL 컴포넌트를 추가할 수 있습니다. 타이틀, 이미지, 정렬과 아이콘을 각기 다르게 구현할 수 있습니다.

 

□ [2009] 아웃룩 사이드바와 같은 카테고리 별 그룹과 버튼을 갖는 UI를 구현할 수 있습니다.

TCategoryButtons 컴포넌트

 

□ [2009] 그리드 컴포넌트의 스타일을 지정할 수 있습니다.

그리드 컴포넌트의 DrawingStyle 속성

Themed, Gradient 스타일이 그리드 컴포넌트에 추가되었습니다.(기본값 = gdsThemed)

 

□ [2007] 최신 윈도우의 가이드라인에 맞는 애플리케이션을 만들 수 있습니다.

최신 윈도우 공식지원

델파이 XE3에서 Windows 8을 델파이 2010에서 Windows 7을 델파이 2007에서 Windows Vista를 공식 지원합니다.
따라서 델파이로 빌드한 애플리케이션은 마이크로소프트의 윈도우 가이드라인을 준수하게 되며, 해당 윈도우에서 아무 문제 없이 동작합니다.

 

□ [2007] 프로젝트 옵션 설정으로 윈도우 테마 지원 적용을 간단하게 할 수 있게 되었습니다.

윈도우 테마 지원 개선

Delphi 7에서는 Windows XP의 테마 기능을 지원하기 위해 XPMan (TXPManifest 컴포넌트)
방식을 사용했습니다.
Delphi 2007 이후로는 이런 테마 지원이 더 네이티브 해져서, 프로젝트 옵션에서 Runtime Theme 선택(또는 Enable runtime Themes 체크)하면 전체 프로젝트에 대해 간편하게 테마
지원을 추가할 수 있습니다.
이 옵션은 Delphi 2007 이상에서 새로 만든 프로젝트에서는 기본으로 적용되며,
Delphi 2006 이하의 구버전에서 작성된 소스에 대해서는 호환성을 위해 체크가 안되어 있습니다. (XPMan 방식을 사용한 경우 이 체크를 하면 충돌하며, 그런 경우 이 개선된 테마 지원을 사용하려면 프로젝트의 모든 유닛들의 uses 리스트에서 XPMan 유닛을 제거해야 합니다)

 

□ [2006] 메모리 매니저와 RTL 함수가 교체되어 성능이 향상된 애플리케이션을 만들 수 있습니다.

FastMM 메모리 매니저 도입

FastMM은 전통적인 Delphi의 메모리 매니저인 borlndmm.dll을 대체하는 것으로서, 이전보다 훨씬 빠른 메모리 루틴들을 제공하여 Delphi로 개발된 애플리케이션의 속도를 비약적으로 끌어올려줍니다. 또한 FastMM으로 인해 Delphi의 RTL에 메모리 관리 관련의 새로운 기능들이 많이 추가되었습니다. 전역 변수인 ReportMemoryLeaksOnShutdown에 True 값을 설정해두면, 프로그램이 종료될 때 메모리 누수 상황에 대해 알려주며, 메인 exe와 dll 사이에 메모리를 간단히 공유할 수도 있습니다.

 

□ [2006] 마우스 중앙 버튼을 누르면 스크롤링 하는 기능을 개발할 수 있습니다.

인텔리마우스 지원

VCL 인텔리마우스 API를 지원합니다. 예를 들어 왼쪽 그림처럼 TMemo 컴포넌트 위에서 마우스 중앙 버튼을 누르면 사용자로 하여금 메모 내에서 스크롤링 하기 위해 마우스를 사용할 수 있도록 해 줍니다. 델파이 코드 에디터도 이 기능을 지원합니다.

 

□ 작업표시줄 영역에 트레이 아이콘을 추가하고 풍선 도움말과 팝업메뉴를 제공할 수 있습니다.

TTrayIcon 컴포넌트

TTrayIcon 컴포넌트는 VCL 애플리케이션이 태스크 트레이에 아이콘을 넣을 수 있도록 해줍니다. 이 컨트롤은 풍선 도움말과 팝업 메뉴를 지원합니다.

 

□ PNG, GIF를 지원할 수 있습니다.

PNG, GIF 지원

bmp, jpeg 이미지 지원에 이어, 이제 VCL에서 PNG 및 GIF이미지 포맷도 지원됩니다. 또한 이미지 리스트 컴포넌트에서 png 파일을 직접 읽어 들일 수 있어 전보다 더 편리하게 되었습니다.

 

□ 컨트롤의 여백을 설정해 컨트롤 배치를 더 다양하게 할 수 있습니다.

VCL – Margins와 Padding

모든 VCL 컨트롤에 Padding 및 Margin 프로퍼티가 추가되었습니다. 이 두 프로퍼티는 HTML에서와 비슷하게 동작하는데, Padding은 컨테이너 컨트롤이 내부의 컨트롤과 가지는 여유 공간의 픽셀 길이입니다. Margin 프로퍼티는 컨트롤의 바깥 여유 공간입니다. 컨트롤의 AlignWithMargins 프로퍼티가 True로 지정되고 Align 프로퍼티가 alNone이 아닌 값으로 지정되면 해당 컨트롤의 Margin 프로퍼티 값에 따라 배치됩니다. 예를 들어, 그림은 폼 위에 있는 TPanel을 보여줍니다. 이 패널은 Align이 alClient로, AlignWithMargins 속성이 True로 지정되었으며, Margin 속성은 20으로 지정된 상태입니다. 또한 폼의 Padding.Bottom 속성은 30으로 지정되었습니다. AlignWithMargins와 Margin 속성을 이용하면 기존의 Align 속성만 이용할 때보다 훨씬 쉽고 풍부하게 컨트롤들을 배치할 수 있습니다.

 

□ 표준 HTML 링크가 들어있는 라벨을 사용할 수 있습니다.

TLinkLabel 컴포넌트

위의 사진은 Caption에 “ 데브기어 홈페이지를 클릭하세요.”을 입력하고 실행한 결과입니다. 링크를 클릭하면 OnLinkClick 이벤트가 발생합니다.

 

 

□ 사용자의 결정이 필요한 경우, 여러가지 선택지를 제공하여 사용자의 의견을 정교하게 받을 수 있습니다.

TTaskDialog 컴포넌트

TTaskDialog 컴포넌트는 비스타에서 새로 도입된 태스크 다이얼로그 기능을 사용할 수 있게 해주는 컴포넌트입니다. 개발자는 오브젝트 인스펙터를 이용하여 TaskDialog의 모양을 커스터마이즈할 수 있습니다.

언어와 컴파일러 업데이트

□ [2010] RTTI를 통해 애플리케이션 런타임 시 메소드, 필드, 속성 정보를 조회할 수 있습니다.

RTTI 강화와 어트리뷰트

델파이 2010에서 델파이의 RTTI가 대폭 강화되었습니다. 이제 RTTI가 메소드, 필드, 속성을 지원하게 되어 동적 호출과 다른 메타 프로그래밍 방식들을 지원하게 되었습니다. 새로 추가된 RTTI.pas 유닛을 통해 강력한 RTTI 루틴들을 뒷받침합니다.
어트리뷰트(attribute)는 이 새로운 RTTI를 기반으로 한 문법으로서, 클래스/레코드나 클래스의 멤버에 추가로 지정되는 정보이며, 실행 중에 읽어질 수 있습니다. 어트리뷰트를 활용하면 일반화된 프레임워크를 개발할 때 아주 유용합니다.

 

□ [2010] DLL 함수가 호출될 때 DLL을 로드하도록 구현할 수 있습니다.

DLL 지연 로딩

Delphi 2010에서는 DLL의 로딩 방법으로서 정적(static) 로딩, 동적(dynamic) 로딩 외에 지연(delayed) 로딩이 추가되었습니다. 지연 로딩은 정적 로딩과 기본적으로 같은 구문을 사용하지만 extern 선언에서 delayed 지시어를 추가하는 것입니다.

procedure ProcInDll; external 'DLL_name.dll' delayed;


정적 로딩 구문에 단지 delayed 지시어를 추가한 것 뿐이지만, 이것만으로도 해당 DLL 함수가 실제로 호출될 때까지 해당 DLL을 로드하지 않습니다. 이전의 정적 로딩을 사용하면 코딩이 단순하고 편리한 반면 해당 DLL이나 함수가 존재하지 않을 경우 프로그램 시작 자체가 실패하는 치명적인 문제가 있습니다. DLL이 이런 우려가 있을 경우에 지연 로딩을 사용하면 깔끔하게 문제가 해결됩니다. 특히 Windows 7이나 Windows Vista 등 최신 버전의 Win32에서 추가된 API들을 호출할 필요가 있으면서 동시에 Windows P, 2000 등 구버전과도 호환성이 필요한 경우 더욱 유용합니다. 또한 지연 로딩을 사용하면 실제 호출할 때까지 DLL을 로드하지 않으므로 메모리 소모도 줄어드는 효과도 있습니다.

 

□ [2009] 명시적으로 타입을 지정하지 않고 실행 시점에 유연하게 타입을 지정하며 개발할 수 있습니다.

제너릭(Generics)

제너릭은 배열, 컬랙션, 목록 등에서 데이터타입을 명시적으로 지정하기 않고, 실행 시 필요한 데이터타입으로 사용할 수 있는 문법입니다. 다음 예제는 제너릭 타입을 이용해 목록(TList<T>) 클래스를 만들고 사용한 코드입니다.

TList = class(TObject)
 public
   procedure Add(const Value: T);
   function Get(Index: Integer): T;
 end;

var
 IntList: TList;
 StrList: TList;
begin
 IntList := TList.Create;
 StrList := TList.Create;
 IntList.Add(100);
 StrList.Add('Hello');
 IntList.Free;
 StrList.Free;

 

□ [2009] 메소드의 파라메터로 코드블록을 전달할 수 있어 유연한 코드를 작성할 수 있습니다.

익명메소드(Anonymouse Method)

이름에서 알 수 있듯이 익명메소드는 이름이 없는 프로시저나 함수입니다. 익명 메소드는 변수에 할당하거나 메소드의 파라메터로 코드 블록을 전달할 수 있습니다.

type
 TProc = reference to procedure(Value: Integer);

procedure Call(const AProc: TProc);
begin
 AProc(10);
end;

procedure DoSimpleAnonymouseMethod;
var
 Proc: TProc;
begin
 proc := procedure(Value: Integer)
   begin
     ShowMessage(Value.ToString);
   end;
 Call(Proc);
end;

익명메소드는 다른 언어의 클로저(closures)의 구조와 유사합니다. 익명메소드는 특히 쓰레드 개발 시 사용하면 유용합니다. 쓰레드 시작 코드 구현 시 쓰레드 완료 코드를 함께 구현하면 작업흐름을 한눈에 파악할 수 있어 코드의 유지보수가 편리해 집니다.

 

□ [2009] 유니코드 문자열 기반의 애플리케이션을 개발할 수 있습니다.

유니코드 지원

이제 델파이 언어 전체에서 유니코드가 지원됩니다. 기존 버전들에서는 String은 AnsiString을 의미했지만 이제는 유니코드를 완벽하게 지원하는 UnicodeString으로 바뀌었습니다. UnicodeString은 기존의 WideString과는 달리 AnsiString과 유사한 레퍼런스 카운팅(Reference Counting) 구조로 설계되어 훨씬 메모리 효율적이며 속도도 빠릅니다. 스트링을 버퍼로 사용해왔던 관행에 대한 대안으로 RawByteString 타입도 추가되었습니다.

 

□ [2006] 기존의 클래스를 수정하지도 상속받지도 않고 클래스 기능을 확장할 수 있습니다.

타입 헬퍼(Type Helper)

타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다.

type
TGeoDirection = (North, East, South, West);
// 열거형을 문자열로 변환하는 기능 확장
TGeoDirectionHelper = record helper for TGeoDirection
function ToString: string; inline;
end;
function TGeoDirection.ToString: string;
begin
 case Self of
TGeoDirection.North:  Result := ‘북쪽 (N)’;
TGeoDirection.East:  Result := ‘동쪽 (E)’;
TGeoDirection.South:  Result := ‘남쪽 (S)’;
TGeoDirection.West:  Result := ‘서쪽 (W)’;
else
 raise Exception.Create(‘Unknown “TGeoDirecton” value’);
end;
end;
var
Direction: TGeoDirection;
begin
 Direction := South;
 ShowMessage(Direction.ToString);
end;

 

□ [2006] 레코드에도 속성, 메소드, 클래스 메소드등 타입을 추가 할 수 있습니다.

메소드를 지원하는 레코드

record 선언에서 클래스처럼 필드 외에도 속성, 메소드(생성자도 포함됨), 클래스 속성, 클래스 메소드, 클래스 필드, 네스티드 타입을 가질 수 있게 되었습니다.

type
 TMyRecord = record
   type
     TInnerColorType = Integer;
   var
     Red: Integer;
   class var
     Blue: Integer;
   procedure printRed();
   constructor Create(val: Integer);
   property RedProperty: TInnerColorType read Red write Red;
   class property BlueProp: TInnerColorType read Blue write Blue;
 end;

constructor TMyRecord.Create(val: Integer);
begin
 Red := val;
end;

procedure TMyRecord.printRed;
begin
writeln('Red: ', Red);
end;

 

□ Exit; 문에 반환값을 넣을 수 있어 코드가 더 짧아 집니다.

반환값을 갖는 빠져나오는 Exit 함수

 

□ inline 지시자로 함수와 프로시저의 성능을 향상 시킬 수 있습니다.

Inline 지시자

타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다.

function Max(const X,Y,Z: Integer): Integer; inline;

델파이 컴파일러는 함수와 프로시저의 성능을 향상할 수 있는 Inline 지시자를 지정할 수 있습니다. 이 지시자는 해당 루틴을 실제로 호출하는 대신 호출하는 측에서 해당 루틴을 포함하는 코드를 생성하도록 합니다.

 

□ 같은 유닛의 클래스에서도 변수와 메소드를 노출하지 않을 수 있습니다.

srict private, strict protected

델파이에서 클래스의 속성에 대한 가시성을 결정하는 2가지 옵션이 있습니다.

  • strict private: private는 같은 유닛에 있는 다른 클래스에서는 접근할 수 있습니다. strict private는 같은 유닛에 있는 다른 클래스에서도 접근할 수 없습니다.
  • strict protected: strict private과 유사하며, strict protected로 선언된 변수와 메소드는 클래스 본인과 상속한 클래스에서만 접근할 수 있습니다.

 

□ 메소드 뿐 아니라 클래스도 abstract로 선언해 추상 클래스로 만들 수 있습니다.

클래스 추상화(class abstract)

타입 헬퍼는 클래스, 레코드, 열거형 타입의 기능을 확장할 수 있는 문법입니다. 다음코드는 열거형에 타입헬퍼를 이용해 ToString 메소드를 확장하는 예제입니다.

type
 TAbstractClass = class abstract
   procedure SomeProcedure;
 end;

 

□ 클래스를 더이상 상속하지 못하도록 sealed로 지정할 수 있습니다.

클래스 봉인(class sealed)

type
 TAbstractClass = class sealed
   procedure SomeProcedure;
 end;

 

□ 클래스는 해당 클래스에서만 사용 가능한 타입 선언을 포함할 수 있습니다.

클래스 타입(class type)

type
 TClassWithClassType = class
 private
   type
     TRecordWithinAClass = record
       SomeField: string; 
     end;
 public
   class var
     RecordWithinAClass: TRecordWithinAClass;
 end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 TClassWithClassType.RecordWithinAClass.SomeField := '이것은 클래스 타입으로 선언된 필드입니다.';
 ShowMessage(TClassWithClassType.RecordWithinAClass.SomeField);
end;

 

□ 클래스는 클래스 변수를 가질 수 있습니다.

클래스 변수(class var)

이것은 클래스의 객체가 아닌 클래스 자체에 적용되는 변수입니다. 예제는 위의 “클래스 타입”을 참고하십시오.


□ 클래스 선언부 에서 타입 선언을 포함시킬 수 있습니다.

중첩된 클래스

클래스 선언 내에서 타입 선언이 포함될 수 있습니다. 이 방법으로 개념적으로 관계가 있는 타입들을 같이 둘 수 있으며, 이름 충돌도 피할 수 있습니다.

type
 TOuterClass = class
 strict private
   MyField: Integer;
 public
   type
     TInnerClass = class
     public
       MyInnerField: Integer;
       procedure InnerProc;
     end;
     procedure OuterProc;
 end;

procedure TOuterClass.TInnerClass.InnerProc;
begin
 ...
end;

 

□ 메소드를 더 이상 상속받지 못하도록 fianl 지시자로 막을 수 있습니다.

final 지시자

오버라이드한 버추얼 메소드를 final로 표시하여 상속되는 클래스에서 해당 메소드를 더 이상 오버라이드하지 못하도록 막을 수 있습니다.

TAbstractClass = class abstract
public
 procedure Bar; virtual;
end;

TSealedClass = class sealed(TAbstractClass)
public
 procedure Bar; override;
end;

TFinalMethodClass = class(TAbstractClass)
public
 procedure Bar; override; final;
end;

 

□ 클래스에 스태틱 클래스 메소드를 추가할 수 있습니다.

클래스 스태틱 메소드(class static method)

클래스에 스태틱 클래스 메소드를 추가할 수 있는데, 이것은 클래스 타입으로부터 호출할 수 있는 메소드입니다. 클래스 스태틱 메소드는 객체에 대한 참조 없이도 사용이 가능합니다. 일반적인 클래스 메소드와는 달리, 클래스 스태틱 메소드는 Self 파라미터를 가지지 않습니다. 또한 객체의 멤버들을 액세스할 수도 없습니다. (클래스 필드, 클래스 속성, 클래스 메소드는 액세스할 수 있습니다) 또한 클래스 메소드와 달리 클래스 스태틱 메소드는 virtual로 선언될 수 없습니다.

type
 TMyClass = class
 strict private
   class var
   FX: Integer;
strict protected
   // 노트: 클래스 속성을 액세스하려면 클래스 스태틱으로 선언되어야 합니다.
   class function GetX: Integer; static;
   class procedure SetX(val: Integer); static;
 public
   class property X: Integer read GetX write SetX;
   class procedure StatProc(s: String); static;
 end;

begin
 TMyClass.X := 17;
 TMyClass.StatProc('Hello');
end;

 

□ 컬렉션의 요소만큼 반복하는 for-in 반복문을 사용할 수 있습니다.

for-in 반복문

이제 델파이에서 컨테이너에 대해 for-요소-in-컬렉션 스타일의 반복자를 지원합니다. 컴파일러는 다음의 컨테이너 반복 패턴을 인식합니다.

 for Element in ArrayExpr do Stmt;
 for Element in StringExpr do Stmt;
 for Element in SetExpr do Stmt;
 for Element in CollectionExpr do Stmt;

 


디버그 업데이트

□ [2006] 디버깅 중에 객체의 하위 멤버까지 상세하게 디버깅할 수 있습니다.

펼쳐지는 Watch, Local Variables

델파이 7까지는 Watch나 Local Variables 윈도우에서 디버그 상태에서 객체의 값을 볼 수는 있었으나 그 멤버들로 드릴-다운 할 수가 없어 디버그 인스펙터를 써야 했습니다.
델파이 2006 버전부터는 Watch와 Local Variables 윈도우에서 각 객체의 하위 멤버들의 값들을 드릴-다운하여 살펴볼 수 있게 되었습니다.

□ [2006] 디버깅 중인 객체의 하위 멤버를

펼쳐지는 디버그 툴팁

디버그 툴팁에서 객체의 멤버들을 계속 드릴-다운하여 그 값들을 살펴볼 수 있게 되었습니다.

또한 Ctrl 키를 누르고 있는 동안 이 툴팁들이 투명하게 보이게 되어, 툴팁을 없애지 않고도 뒤의 코드 내용을 볼 수 있게 되었습니다.

□ 쓰레드 이름을 지정해 쓰레드 디버깅을 더 용이합니다.

NameThreadForDebugging

쓰레드 디버깅이 용이하도록 TThread 클래스에 NameThreadForDebugging 메소드가 추가되었으며, 이를 이용하여 IDE의 Thread View에 현재 디버깅중인 각 쓰레드들의 이름을 볼 수 있습니다.

 

쓰레드의 임시 이름 지정

디버깅 중에도 Thread Status Window의 특정 쓰레드에 임시로 이름을 지정할 수 있습니다.

 

□ 쓰레드를 지정해 중단점을 걸어 특정 쓰레드에서 디버깅 할 수 있습니다.

쓰레드 지정 중단점(BreakPoint)

멀티 쓰레드 개발 시 중단점을 찍으면 여러 쓰레드에 중단점이 걸려 IDE가 먹통(Hang)이 될 수 있습니다. 이런 경우 쓰레드를 선택 해 중단점을 찍고 디버깅 할 수 있습니다.


□ 쓰레드를 지정해 중단점을 걸어 특정 쓰레드에서 디버깅 할 수 있습니다.

쓰레드 지정 중단점(BreakPoint)

멀티 쓰레드 개발 시 중단점을 찍으면 여러 쓰레드에 중단점이 걸려 IDE가 먹통(Hang)이 될 수 있습니다. 이런 경우 쓰레드를 선택 해 중단점을 찍고 디버깅 할 수 있습니다.


□ 원하는 쓰레드만 디버깅 하기 위해 쓰레드를 일시적으로 얼리고(Freeze) 녹일(Thaw) 수 있습니다.

쓰레드 Freeze/Thaw

특정 쓰레드만 디버깅하기 위한 Thread Specific Breakpoint 기능이 추가되었습니다.

 

□ TDateTime, TStringList 변수의 값도 디버깅 상태에서 확인할 수 있습니다.

디버그 비주얼라이저

TDateTime, TStringList 등 기존에는 디버거에서 그 값을 추적할 수 없었던 타입들을 볼 수 있게 해주는 Debug Visualizer가 추가되었습니다. 이제 TDateTime, TStringList 변수의 값을 디버깅 상태에서 볼 수 있게 되었습니다.

 

□ 디버그 모드로 실행 중 예외(Exception)가 발생해도 이어서 테스트할 수 있습니다.

예외 다이얼로그 개선

델파이 7 이하 버전에서는 실행중 예외가 발생했을 경우 무조건 IDE에서 실행이 멈추었지만(break), 이제는 Break와 Continue를 선택할 수 있게 되어 IDE에서 해당 라인을 찾아가지 않고 곧바로 실행을 계속하도록 할 수 있게 되었습니다.

또한 다이얼로그 아래쪽에 있는 “Ignore this exception type” 옵션에 체크를 하면 IDE가 해당 타입의 예외를 무시하도록 할 수 있습니다.


□ 개발자가 설정하지 않은 중단점외의 의도치 않은 중단점을 무시할 수 있습니다

Ignore non-user breakpoint

Tools > Options > Debugger Options > Embarcadero Debuggers에 “Ignore non-user breakpoints” 옵션이 추가되었습니다. 이 옵션을 선택하면 개발자가 설정하지 않은 중단점(Non-user breakpoint)으로 인한 IDE 일시 정지를 하지 않습니다.
Non-user breakpoint는 DbgBreakPoint() API 함수 호출에 의해 코딩으로 지정된 것으로, 흔히는 Windows OS커널의 버그로 발생하며, 이런 의도하지 않은 코드에 의한 중단점 무시할 수 있습니다.

또한 델파이 XE 부터는 non-user breakpoint를 만날 경우 Event Log 윈도우에 표시합니다.

 

□ IDE에서 바로 실행 모드로 실행할 수 있습니다.

Run Without Debugging

IDE에서 디버깅 모드로 프로젝트를 실행하는 Run 이외에, 디버그 모드가 아닌 실행 모드로 프로젝트를 실행해주는 Run Without Debugging 명령이 추가되었습니다.

 

예를 들면, 서버-클라이언트로 구성된 프로젝트 그룹에서 서버와 클라이언트 프로젝트를 서로 연동 테스트하려고 할 때 아주 편리합니다.
서버를 먼저 Run Without Debugging 으로 실행 모드로 실행 후 클라이언트는 디버그모드로 실행하며 디버깅할 수 있습니다. 물론 그 반대로도 가능합니다.(다만 디버그 모드로 실행한 상태에서는 추가로 Run Without Debugging 모드로 추가 실행할 수 없습니다.)

 

□ 디버그 모드의 프로세스를 디버깅을 해제해 실행 모드로 실행을 이어갈 수 있습니다.

Detach from Program

Detach from Program 명령은 실행 중인 프로그램에 디버거를 연결하여 디버깅하는 Attach to Process와는 정반대로, 디버깅 모드에서 실행 중이던 프로젝트로부터 디버깅을 해제하고 일반 모드로 실행을 계속하도록 합니다.

 

□ 쓰레드에서 데드락 발생 시 그에 대한 자세한 정보를 찾아볼 수 있습니다.

Wait Chain Traversal

Wait Chain Traversal(WCT)은 프로젝트의 어떤 쓰레드에서 데드락이 발생했을 때 그에 대한 자세한 정보를 찾아볼 수 있게 해줍니다. 쓰레드들 사이에 데드락이 발생했을 때, Thread Status에 새로 추가된 Wait Chain 컬럼에 각 쓰레드들 사이의 상호 블로킹 상태를 표시해줍니다.

 

□ Watch 윈도우에서 객체의 하위객체를 보다가 빠르게 추가하고, 값을 변경해 디버깅이 더 편해집니다.

Watch의 New Watch, Evaluate/Modify 메뉴

Watch 윈도우에 추가된 객체의 하위 객체에서 오른쪽 클릭하여 팝업 메뉴에서 New Watch를 선택하면, 해당 하위 객체가 Watch 윈도우에 추가됩니다.
또한, Evaluate/Modify 메뉴를 선택하면 해당 객체에 대한 Evaluate/Modify 창이 떠서 즉시 값을 변경해볼 수 있습니다.

 

□ 기타 추가된 디버그 기능을 활용할 수 있습니다.

기타 추가된 디버그 기능들

  1. CPU 뷰가 에디터 탭의 바깥에 독립적으로 열릴 수 있습니다.
  2. 디스어셈블리 창에 “Show Opcodes” 로컬 메뉴 항목이 추가되었습니다.
  3. 디스어셈블리 창에 “Show Addresses” 로컬 메뉴 항목이 추가되었습니다.
  4. Tools > Options > Debugger Options > Event Log에 “Scroll new events into view” 옵션이 추가되었습니다.
  5. 툴바를 커스터마이즈할 때 “Notify on language exceptions” 버튼이 추가되었습니다. 이 버튼은 개발자들이 Tools > Options > Debugger Options > Embarcadero Debuggers | Language Exceptions 페이지에 있는 “Notify on Language Exceptions” 옵션을 빠르게 토글할 수 있게 해줍니다.
  6. Call Stack 뷰에서 해당 프레임이 디버그 정보를 포함하고 있는지 보여주는 이미지를 보여줍니다.
  7. Call Stack 뷰에서 지정된 스택 프레임 위치에서 개발자들이 브레이크 포인트를 설정할 수 있습니다.
  8. Call Stack 뷰에서 한 항목을 더블 클릭하면 자동으로 로컬 뷰를 동기화해줍니다.
  9. 에디터에서 CTRL-F5 핫키를 치면 현재 라인에 설정되어 있는 브레이크 포인트를 활성/비활성화해줍니다.
  10. Project > Options > Debugger 다이얼로그에서 델파이 등 모든 프로젝트 타입에 대해 “Debug Source Path” 설정을 지정할 수 있습니다. 이전에는 이 설정을 델파이 Win32에서는 Directories/Conditionals 페이지에서 지정할 수 있었으나, 다른 퍼스낼리티에서는 불가능했습니다.
  11. “Automatically close files implicitly opened while debugging” 옵션 설정에 CPU 뷰도 적용되게 되었습니다.