XE8 の新機能

提供: RAD Studio
移動先: 案内検索

以前のリリースでの新機能 への移動


XE8XE8 Subscription Update 1XE8 General Update 1 リリースでは、以下のような新機能追加や既存機能改良が行われています。

目次

XE8 Update 1 の新機能

以下に目を通して、XE8 Subscription Update 1XE8 General Update 1 に含まれている機能の違いを確認してください。

  • Subscription Update 1 は、アクティブなアップデート サブスクリプションに加入されているお客様に提供されています。
  • General Update 1 は、アップデート サブスクリプションに加入されていない XE8 ユーザーのお客様に提供されています。

アップデート サブスクリプションの詳細については、こちらを参照してください。

XE8 Subscription Update 1 の新機能

Subscription Update 1 は、アクティブなアップデート サブスクリプションに加入されているお客様に提供されています。

  • 新機能:
  • 具体的なバグ修正:
  • IDE の生産性向上機能の堅牢性の向上
  • [マルチデバイス プレビュー]の改良
  • 多数の補足的な修正。修正の詳しい一覧については、EDN を参照してください。

XE8 General Update 1 の新機能

General Update 1 は、アップデート サブスクリプションに加入されていない XE8 ユーザーのお客様に提供されています。

  • 新機能:

XE8 Update 1 の機能

GetIt パッケージ マネージャ

GetIt ウィンドウの名前と、[ツール]メニュー内の GetIt パッケージ マネージャの名前が、GetIt パッケージ マネージャに更新されました。

GetIt には、[無料]、[購入可能]、[購入済み]の 3 つのフィルタ オプションが新しく追加されています。 これらオプションの詳細については、「GetIt パッケージ マネージャ ウィンドウ」を参照してください。

FireDAC の改良点

XE8 では、Unidirectional プロパティは読み取り専用の IsUniDirectional プロパティと同期しています。

TFDQueryTFDTableUnidirectional プロパティの値を変更すると、FireDAC データセットを単方向データセットに変換できます。

新規の Embarcadero コミュニティ ツールバー

新規の Embarcadero コミュニティ ツールバーを使用すれば、Embarcadero コミュニティに簡単に接続できます。このツールバーは IDE の右上隅にあります。

[表示|ツールバー|Embarcadero コミュニティ]を選択すると、このツールバーを表示または非表示にすることができます。

このツールバーの詳細については、「Embarcadero コミュニティ ツールバー」を参照してください。

[ウェルカム ページ]の[お気に入りプロジェクト]セクション

[ウェルカム ページ]には、[お気に入りプロジェクト]セクションが含まれています。このセクションにお気に入りプロジェクトを追加できます。お気に入りプロジェクトの追加および削除の方法については、「[お気に入りプロジェクト]」([ウェルカム ページ]」トピック)を参照してください。

XE8 での FireMonkey の変更点

FireMonkey 当社エンバカデロ・テクノロジーズ独自のオブジェクト指向プログラミング ライブラリ(クラス、メソッド、プロパティなど)です。

iOS での TListView、TSwitch、TMemo、TCalendar、TMultiView、TEdit のネイティブ表示

FireMonkey では、iOS ターゲット プラットフォームで、TListViewTSwitchTMemoTCalendarTMultiViewTEdit の各コントロールについてスタイル付き表示とネイティブ表示の両方をサポートするようになりました。

  • デフォルトでは、これらのコンポーネントのいずれをフォーム デザイナに追加しても、RAD Studio では Styled の表示が使用されます。
  • iOS ターゲット プラットフォームでネイティブ表示を使用するには、新規の ControlType プロパティを Platform に設定します。

詳細については、TPresentedControl.ControlTypeTListViewBase.ControlType、および 「FireMonkey のネイティブ iOS コントロール」を参照してください。

プラットフォームとスタイル付きコントロールとの相互運用性の向上

iOS でのネイティブ表示をまだサポートしていないいくつかのコントロールで、ControlType プロパティが使用可能になりました。

  • ControlType プロパティの値は iOS プラットフォームでのみ使用され、その他のすべてのプラットフォームでは無視されます。
  • これで、ControlType プロパティを持っているスタイル付きコントロールは、TPanelTButtonTSpeedButtonTCornerButtonTCheckBoxTRadioButtonTGroupBoxTStatusBarTToolBarTProgressBarTTrackBarTArcDial になりました。
  • これらのコントロールの ControlType プロパティを Platform に設定することにより、それらをプラットフォーム コントロール(TWebBrowser コントロールや TMediaPlayer コントロールなど)と同じ Z 順序の平面に描画できるようになります。

デスクトップ Web ブラウザ

FireMonkey では、デスクトップ プラットフォーム(Windows および Mac OS X)で TWebBrowser コンポーネントを使用できるようになりました。これまでは TWebBrowser はモバイル プラットフォーム(Android および iOS)でのみサポートされていました。 Web ブラウザの基本機能(指定 URL への移動、戻る、進む、など)がすべて使用可能です。詳細については、「モバイル チュートリアル:Web ブラウザ コンポーネントを使用する(iOS および Android)」を参照してください。

対話型マップ

モバイル プラットフォーム(Android および iOS)上の FireMonkey では、モバイル アプリケーションに対話型マップを追加する TMapView コンポーネントをサポートしています。このコンポーネントの基本機能は次のとおりです。

  • 4 種類の地図: 標準、衛星写真、ハイブリッド、(Android 限定の)地形図
  • ジェスチャ制御: 直観的なチルト、回転、ズームのジェスチャによる制御。
  • マップ ビューの制御: 地図の中心座標や向きなどの地図の特性を制御できます。
  • カスタム マーカー: 地図にマーカーを追加できます。

重要: Android アプリケーションで TMapView を使用するには、Google Maps API キーを取得する必要があります。有効な API キーがない場合、実行時エラーが発生します。Google Maps API キーの取得についての詳細は、「Google マップを使用できるよう Android アプリケーションを構成する」を参照してください。

詳細と例については、「モバイル チュートリアル:マップ コンポーネントを使用して地図を操作する(iOS および Android)」を参照してください。

メディア ライブラリの新規オプション

FireMonkey では、デバイス カメラで撮影した写真をデバイスのフォト ライブラリに保存するオプションを提供するようになりました。
アプリケーションで FireMonkey のアクションIFMXCameraService インターフェイスのどちらかを使って写真を処理する場合は、TCustomTakePhotoAction.NeedSaveToAlbum プロパティか TParamsPhotoQuery 型のパラメータを使用して、アプリケーションで写真が自動的にデバイスのフォト ライブラリに保存されるようにすることができます。
さらに、FireMonkey には任意のビットマップ画像をデバイスのフォト ライブラリに保存できる IFMXPhotoLibrary インターフェイスが用意されています。

詳細情報とコード例については、以下を参照してください。

TMediaPlayer の標準アクション

FireMonkey では、次の標準アクションが提供されており、これを使用して、TMediaPlayer のどのインスタンスも制御できるようになりました。

フォーム画面位置指定

フォーム画面位置指定機能が FireMonkey プロジェクトで使用可能になりました。フォーム画面位置指定機能を使用すると、アプリケーションの設計時にフォームどうしの位置関係を指定できます。デザイナ右下の[フォーム画面位置]に、実行時に画面のどの位置にフォームが表示されるかが示されます。

InputQuery で入力フィールドのマスクをサポート

InputQuery では、入力データが画面上でマスクされる(表示されない)ようにフィールドにマークを付けることができようになりました。フィールドにマークを付けるには、InputQuery 呼び出しのフィールド名の先頭に

  • Delphi の場合: "#1" を付けます。たとえば、'Password' というフィールド名の代わりに #1'Password' というフィールド名を使用します。
  • C++ の場合: "\1" を付けます。たとえば、"Password" というフィールド名の代わりに "\1Password" というフィールド名を使用します。

FireMonkey での AppAnalytics

FireMonkey で AppAnalytics がサポートされるようになりました。これを使用すると、アプリケーションの使用状況を追跡することができます。それには、アプリケーションに TAppAnalytics コンポーネントをドロップし、そのコンポーネントのいくつかのオプションを設定するだけです。TAppAnalytics がアクティブになったら、数分後には AppAnalytics Web インターフェイスで使用状況データが得られます。

  • AppAnalytics は完全に匿名であり、個人情報の収集や送信を行いません。

ローカル通知のカスタマイズ

カスタム通知音

SoundName フィールドの値を設定することにより、カスタム通知音を設定できます。 詳細については、「モバイル チュートリアル:通知を使用する(iOS および Android)」を参照してください。

通知の繰り返し

RepeatInterval プロパティの値を設定することにより、スケジュールされた通知を一定時間繰り返すことができます。 詳細については、「モバイル チュートリアル:通知を使用する(iOS および Android)」を参照してください。

実行時に使用される Android ビューはターゲット デバイスのサイズに依存

次の 2 つの表では、適合する Android ビューを実行時に選択するためのアルゴリズムと、各ビューに適合する Android デバイス サイズの範囲について、それぞれ説明しています。

  • ビュー読み込みアルゴリズム: FireMonkey ビューの使用(「ビューの読み込みのアルゴリズム」セクション)
  • 各 Android ビューに適合するデバイス サイズの範囲: FireMonkey ビューの使用(「各 Android ビューに一致するデバイス サイズの範囲」セクション)

デバイス フォト アルバムへの画像の保存

FireMonkey には、システムのフォト アルバムに画像を保存するための IFMXPhotoLibrary インターフェイスが用意されるようになりました。

  • デバイスのフォト アルバムにビットマップ画像を保存するには、AddImageToSavedPhotosAlbum を使用します。

デバイス フォト アルバムへの画像の保存方法の詳細については、MediaLibrary.IFMXPhotoLibrary および IFMXPhotoLibrary.AddImageToSavedPhotosAlbum の API ドキュメントを参照してください。

TImageList により画像の一元的なコレクションとしての画像リストを導入

FireMonkey では、新しいコンポーネント FMX.ImgList.TImageList を通じて画像リストを提供するようになりました。画像リストは、FireMonkey アプリケーションの GUI 要素(コントロールやメニューなど)で小さい画像の一元的なコレクションを使用するためのあらゆる機能を備えたツールとなります。FireMonkey の TImageList は VCL の Vcl.Controls.TImageList と同じ目的にかなうものですが、より高度な機能を提供し、マルチプラットフォームの FireMonkey アプリケーションでさらに使いやすくなっています。

リスト内の各画像はいくつかの多重解像度ビットマップを使って作成されるので、デバイス画面の密度や解像度が異なっても画像が必ず正しく表示されます。画像リスト エディタを使用すれば、FireMonkey 画像リストを用意および変更できます。

詳細については、「画像の一元的なコレクションとしての TImageList 画像リストの使用」や「FMX.ImageList のサンプル」を参照してください。

FireMonkey API の新規追加および変更

新しい OnFilter イベント

検索ボックスにカスタム フィルタを設定するための OnFilter イベントが FireMonkey から新しく提供されています。

新しい OnFilter イベントの詳細については、TListViewBase.OnFilter および TSearchBoxModel.OnFilter を参照してください。

カメラのカスタム高品質キャプチャの設定

TVideoCaptureQuality には、カメラのカスタム高品質キャプチャ設定用の値 CaptureSettings が新しく追加されました。

新規の TBoundingBox クラス

TBoundingBox は新規クラスで、TRectF と似ていますが、3D で使用するためのものです。これは、ボックスを記述する最大および最小頂点を格納するレコード型を定義しています。

このクラスには、原点、一連の点、座標、既存の TBoundingBox のいずれかを指定して TBoundingBox インスタンスを作成できるいくつかのコンストラクタがあります。このクラスに用意されているメソッドには、その他に、GetSizeInflateIntersectsWithContainsNormalize などがあります。

iOS ネイティブ リスト ビューの PullRefreshWait プロパティ

新しい PullRefreshWait プロパティでは、PullToRefreshTrue のときにアニメーション化された回転インジケータが表示され、自動的に消えるかどうかを設定することができます。

PullRefreshWaitTrue に設定した場合、必要に応じて、StopPullRefresh メソッドを呼び出して、アニメーション化された回転インジケータを非表示にする必要があります。

PullRefreshWait プロパティはネイティブ iOS コントロール専用です。

XE8 でのランタイム ライブラリ(RTL)の変更点

新しい HTTP クライアント API

RTL には、HTTP クライアントの作成、HTTP サーバーへの要求の送信、HTTP サーバーからの応答の処理に使用できるコンポーネントで構成される新しいネットワーク関連ユニットがいくつか用意されています。

HTTP クライアントの使用」では、2 つの新しい HTTP コンポーネント TNetHTTPClient および TNetHTTPRequest を使用して HTTP 要求を処理する方法について説明しています。また、次の主要な HTTP クライアント クラスも参照してください。

  • THTTPClient -- HTTP クライアントを表します。
  • THTTPRequest -- クライアントからサーバーへの要求を表します。
  • THTTPResponse -- クライアントからの要求に対するサーバーの応答を表します。

ビーコンのサポート

RTL では、ビーコンの使用をサポートするようになりました。ビーコンは、アドバタイズ データに何らかのメーカー固有データ(Manufacturer Specific Data)を含んでいる Bluetooth LE デバイスで、その情報を受信するあらゆるデバイスは、このビーコン デバイスを識別し、そのデバイスとペアになったり接続することなく、それに対する距離を計算できるようになります。

使用可能な次の 2 種類のビーコン形式がサポートされています。

  • iBeacon -- Apple 社によって規定された形式です。
  • AltBeacon -- 代替ビーコンとも呼ばれるオープン形式で、Android と iOS の両方をサポートしています。

ビーコンの使用」では、ビーコン アプリケーションの実装方法について説明しています。

新規の クラシック Bluetooth コンポーネント

System.Bluetooth.Components ユニットでは新規コンポーネント TBluetooth を提供するようになりました。この新規コンポーネントにより、コンポーネントベースのアプローチを用いてアプリケーションでクラシック Bluetooth を使用することができます。

この新規コンポーネントの使用方法については、「クラシック Bluetooth の使用」を参照してください。

新しいハッシュ API

RTL には新しいユニット System.Hash があります。このユニットには、アプリケーションで次のハッシュ関数を使用できるようにするクラスやメソッドが含まれています。

新しい Delphi データ型 FixedInt および FixedUInt

プラットフォームに依存しない次の 2 つの 32 ビット整数型が XE8 に新しく導入されています。

  • FixedInt: 32 ビット符号付き整数型
  • FixedUInt: 32 ビット符号なし整数型

FixedIntFixedUInt により、移植性、統合の向上、32 ビット プラットフォームおよび 64 ビット プラットフォームとの相互運用性が確保されます。これら 2 つの新しい型を使用すると、アプリケーションは Delphi にも C++ にも対応できます。

FixedIntFixedUInt のサイズは、すべての 64 ビットおよび 32 ビット プラットフォーム(64 ビット iOS、64 ビット Windows、32 ビット Windows、OSX32、32 ビット iOS、Android)で 32 ビットです。さまざまなプラットフォームでの同等の型を次の表に示します。

他のプラットフォームにおける同等の型
Windows プラットフォーム
(32 ビットおよび 64 ビット Windows)
OSX32、Android プラットフォーム
iOS プラットフォーム(32 ビットおよび 64 ビット iOS)
FixedInt LongInt Integer

FixedUInt

LongWord Cardinal

詳細については、以下を参照してください。

64 ビット iOS プラットフォームでの LongInt および LongWord のサイズの変更

LongIntLongWord はプラットフォーム依存の整数型になりました。

64 ビット iOS プラットフォームでは、次のように、LongIntLongWord のサイズが、32 ビット プラットフォーム(32 ビット Windows、OSX32、32 ビット iOS、Android)と 64 ビット Windows プラットフォームでサポートされているサイズの 2 倍になっています。

サイズ
32 ビット プラットフォームおよび 64 ビット Windows プラットフォーム 64 ビット iOS プラットフォーム
LongInt 32 ビット(4 バイト) 64 ビット(8 バイト)

LongWord

32 ビット(4 バイト) 64 ビット(8 バイト)

詳細については、「プラットフォーム依存の整数型」を参照してください。

非同期プログラミング ライブラリ

RTL では、TComponent 内での非同期プログラミングをサポートしています。

詳細については、「非同期プログラミング ライブラリの使用」を参照してください。

XE8 での VCL の変更点

SetApplicationMainFormOnTaskBar が Vcl.Forms.hpp から削除

C++ で作成した既存の VCL アプリケーションがある場合は、次の行を

 SetApplicationMainFormOnTaskBar(Application, true);

次の行に置き換える必要があります。

  Application->MainFormOnTaskBar = true;

詳細については、以下を参照してください。

VCL での AppAnalytics

VCL では、TAppAnalytics コンポーネントをサポートするようになりました。AppAnalytics を使用すると、アプリケーションの使用状況を追跡することができます。それには、アプリケーションに TAppAnalytics コンポーネントをドロップし、そのコンポーネントのいくつかのオプションを設定するだけです。 AppAnalytics がアクティブになったら、数分後には AppAnalytics Web インターフェイスで使用状況データが得られます。 AppAnalytics では、個人情報の収集や送信を行いません。情報は完全に匿名になっています。

詳細については、「AppAnalytics の概要」を参照してください。

新しい VCL スタイル

XE8 には新しい VCL スタイルが 3 つ含まれています。つまり、GlowSkyTablet Light です。

これらの VCL スタイルにアクセスするには、 [プロジェクト|オプション...|アプリケーション|表示]を選択します。

XE8 での Delphi の変更点

64 ビット iOS デバイス用の新しいコンパイラ DCCIOSARM64.EXE

DCCIOSARM64.EXE コンパイラは、64 ビット iOS アプリケーションの開発をサポートしている新しい NEXTGEN コンパイラです。

App Store の要請により、今では、32 ビット iOS アプリケーションは 64 ビット iOS デバイスもサポートする必要があることに注意してください。 詳細については、「32 ビット iOS と 64 ビット iOS を両方ともサポートする iOS バイナリを作成する新規オプション」を参照してください。

ユニバーサル iOS アプリケーション: DCCIOSARM64 では、[<プロジェクト名> のプロジェクト オプション]ダイアログ ボックスの[コンパイル]ページで新しいオプション[iOS ユニバーサル バイナリ ファイルの生成 (armv7 + arm64)]をサポートしています。
このオプションを True に設定すると、32 ビット iOS デバイスでも 64 ビット iOS デバイスでも動作するユニバーサル iOS アプリケーションが生成されるようになります。このオプションは、[ターゲット プラットフォーム]が[iOS デバイス - 64 ビット]である場合にのみ使用可能です。

条件付きコンパイル(Delphi)」も参照してください。

2 つの新しいデータ型: FixedInt および FixedUInt

詳細は、「新しい Delphi データ型 FixedInt および FixedUInt」を参照してください。

XE8 での C++ の変更点

BCCIOSARM64.EXE: 64 ビット iOS デバイス 向けの新しい Clang 拡張 C++ コンパイラ

64 ビット iOS アプリケーションを生成する新しい C++ コンパイラ BCCIOSARM64.EXE が追加されました。

App Store の要請により、今では、32 ビット iOS アプリケーションは 64 ビット iOS デバイスもサポートする必要があることに注意してください。RAD Studio では、ユニバーサル 32 ビット/64 ビット iOS アプリケーションを作成するためのオプションが提供されています。 詳細については、「32 ビット iOS と 64 ビット iOS を両方ともサポートする iOS バイナリを作成する新規オプション」を参照してください。

BCCIOSARM64 では、新しい定義済みマクロ __arm64__ をサポートしています。64 ビット iOS ターゲット プラットフォームに固有のコードを記述するには、以下のように使用します。

#if defined (__arm64__)
 ...
#endif

x64(iOS および Windows)に固有のコードを記述するには、以下のように使用します。

#if defined(__clang__) && (__POINTER_WIDTH__ == 64)
...
#endif

詳細については、「定義済みマクロ」を参照してください。

実行時パッケージを組み込む際には完全修飾名が必要

VCL または FireMonkey C++ アプリケーションのビルド時に、IDE ではパッケージ分析を実行します。つまり、アプリケーションで必要になる(または使用される)パッケージを、インクルードされているヘッダーから推測します。XE8 以前は、ヘッダーに対応するパッケージを決定する際に、IDE ではベース名が使用されていました。たとえば、アプリケーションで SysUtils.hpp をインクルードしている場合、そのことから IDE では、アプリケーションで rtl パッケージが使用されることを推測します。同様に、#include ActnCtrls.hpp という文があれば、アプリケーションで vcl パッケージが使用されることになります。

ただし、ベース名の使用には欠点もあります。アプリケーションで About.h|hpp というヘッダーをインクルードしている場合、FireDac UI パッケージが必要と誤って推測されるおそれがあります。このパッケージには FireDAC.VCLUI.About.hpp というユニットが含まれているからです。同様に、assert.h をインクルードすると、IDE は DUnitXRuntime パッケージをリンクするおそれがあります(このパッケージには DUnitX.Assert というユニットが含まれているからです)。

修飾名でのマッチングのみ実行

XE8 以降、IDE では、パッケージ内のユニットの修飾名(完全名)を指定した #include 文が含まれている場合にのみ、そのパッケージを必要と見なすようになりました。つまり、#include <XMLDoc.hpp> という文が含まれていても、IDE では、Xml パッケージが必要であるとは判断しません。IDE では、"#include <Xml.XMLDoc.hpp>" のように完全修飾名で指定された場合にのみ、xmlrtl パッケージを組み込みます。

この変更は新規プロジェクトにのみ影響

今回の変更が適用されるのは、新規プロジェクトの場合、または、これまで使用したことがないパッケージを既存プロジェクトで使用するようになった場合です。 この変更は既存のプロジェクトには影響を及ぼしません。これらのプロジェクトに必要なパッケージは既に決定され、その情報がプロジェクト ファイル(<プロジェクト名>.cbproj)に保存されているからです。

新しく定義されたマクロ

完全修飾パッケージ名の使用を監視しやすくするため、次の 2 つのマクロが新しく定義されました。

  • WARN_LEGACY_HEADER_USAGE -- 非修飾名のヘッダーがインクルードされている場合に警告を発生させます。
  • ERROR_LEGACY_HEADER_USAGE -- 非修飾名のヘッダーがインクルードされている場合にエラーを発生させます。

#define WARN_LEGACY_HEADER_USAGE を追加してから、「#include <SysUtils.hpp>」と入力すると、ビルドの際に、次の警告が表示されます。

 Include <System.SysUtils.hpp> instead

#define ERROR_LEGACY_HEADER_USAGE を追加してから、「#include <SysUtils.hpp>」と入力すると、ビルドの際に、次のエラー メッセージが表示されます。

 Fatal F1003 $BDS\include\windows\rtl\SysUtils.hpp 8: Error directive: Include 'System.SysUtils.hpp' instead
  *** 1 errors in Compile ***

DynamicArray:インスタンス生成と初期化がより簡単に

これまでは、次の例のように、DynamicArray の長さをセットアップしてから、要素を追加しなければなりませんでした。

  DynamicArray<int> test;
  test.Length = 3;
  test[0] = 1;
  test[1] = 2;
  test[2] = 3;

現在では、Clang 拡張 C++ コンパイラを使用する場合は、次の例のように、動的配列のインスタンス生成と初期化を同時に行えるようになりました。

  DynamicArray<int> test = {0, 1, 2};

BCC32 の場合は、配列のインスタンス生成と初期化を次のように行えます。

 DynamicArray<int> test(0, 1, 2);

この新しい構文は、C++11 std::initializer_list を使用して実装されています。

新しい形式

弊社のすべての C++ コンパイラの場合

普通の C++ 配列を使用した場合:

    // template <size_t SIZE> System::DynamicArray(T(&array)[SIZE]);
    int values[] = { 1, 2, 3, 4, 5 };
    System::DynamicArray<int> h(values);

Clang 拡張 C++ コンパイラの場合

C++11 初期化リストを使用した場合:

    // System::DynamicArray(std::initializer_list<T> il);
    System::DynamicArray<char> ArrayOfChars('a', 'b', 'c');
    System::DynamicArray<int> ArrayOfInts(0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
                                        10, 11, 12, 13, 14, 15, 16, 17, 18);

C++11 可変個引数テンプレート化コンストラクタを使用した場合:

    // template <class... Types> System::DynamicArray(const T &t, Types && ...values);
    System::DynamicArray<char> c('a'); // t='a', ...values=<>
    System::DynamicArray<char> d('a', 'b', 'c'); // t='a', ...values=<'b', 'c'>

BCC32 の場合

BCC32 では C++11 の統一初期化をサポートしていないため、次のように、2 個から最大 19 個までのパラメータのコンストラクタ オーバーロードが追加されました。

    // System::DynamicArray(const T &t0, const T &t1, const T &t2);
    System::DynamicArray<char> f('a', 'b', 'c');
    // System::DynamicArray(const T &t0, const T &t1, const T &t2, const T &t3,
    // const T &t4, const T &t5, const T &t6, const T &t7,
    // const T &t8, const T &t9, const T &t10, const T &t11,
    // const T &t12, const T &t13, const T &t14, const T &t15,
    // const T &t16, const T &t17, const T &t18);
    System::DynamicArray<int> g( 0,  1,  2,  3,  4,  5,  6,  7,  8,  9,
                                10, 11, 12, 13, 14, 15, 16, 17, 18);

詳細は、「構造化型」を参照してください。

SetApplicationMainFormOnTaskBar が Vcl.Forms.hpp から削除

詳細については、「XE8 での VCL の変更点」を参照してください。

Boost がインストーラ以外で入手可能に

Boost ライブラリは製品インストーラの一部ではなくなりました。 [ツール|GetIt]を選択して GetIt メイン ウィンドウを開き、その後、[GetIt から Boost をインストール]を選択することで、Boost は簡単に取得することができます:

Boost のそれ以外のインストール(またはアンインストール)方法については、「Boost」を参照してください。

Delphi 無名メソッドの新しい扱い方

C++ アプリケーションにおける Delphi 無名メソッドの取り扱いの推奨方法が更新されました。「C++ での Delphi 無名メソッドの扱い方」トピックの改訂後の記述では、ファンクタ(関数オブジェクト)かラムダ式のどちらかを使用しています。このトピックのコード例を参照してください。

Delphi の暗黙の演算子と同じように機能する C++ の代入演算子

Delphi で暗黙の演算子を使用するのと同じように、C++ では、operator= を結果型への代入に使用することができます。

たとえば、TValue 型の変数 myVar がある場合、Delphi では、次のように、この変数にさまざまな型の値を代入することができます。

a := 'assigning a string';
a := 123;
a := 3.14;

これまで C++ では、代入演算子を使用せずに、上記と同等のコードを次のように記述する必要がありました。

a = TValue::_op_Implicit(UnicodeString(L"assigning a string"));
a = TValue::_op_Implicit(123);
a = TValue::_op_Implicit(3.14L);

これを、C++ では、代入演算子を使って次のように記述できるようになりました。

a = UnicodeString(L"assigning a string");
a = 123;
a = 3.14L;

詳細については、「Delphi の暗黙の演算子のように機能する C++ の代入演算子」を参照してください。

XE8 での IDE の変更点

新しいターゲット プラットフォーム[iOS デバイス - 64 ビット]

64 ビット iOS デバイス プラットフォーム向けにアプリケーションを新規作成するために:

[マルチデバイス プレビュー]

新しい[マルチデバイス プレビュー]ウィンドウでは、さまざまなデバイスでのアプリケーションの外見をプレビューできます。[マルチデバイス プレビュー]には、複数のデバイスでのデザイン領域のプレビューが同時に表示されます。プレビューするデバイスを選択できます。

MDPreviewWindow1.png

[マルチデバイス プレビュー]ウィンドウを開くには、[表示|マルチデバイス プレビュー]を選択します。

この機能の詳細については、「[マルチデバイス プレビュー]」を参照してください。

[デバイス マネージャ]

[デバイス マネージャ]には、使用可能な設定済みデバイスのグリッドが表示されます。これらの設定済みデバイスは、設計時に[マルチデバイス プレビュー]ウィンドウなどに表示される使用可能なデバイスの一覧です。

[デバイス マネージャ]を開くには、[ツール|オプション...|環境オプション|フォーム デザイナ|デバイス マネージャ]を選択します。

DeviceManager.png

[デバイス マネージャ]では、[デバイスの設定]ウィンドウを使って設定済みデバイスの追加編集削除を行えます。

また、これらの設定済みデバイスは、マルチデバイス プロジェクトのビューとして使用することもできます。ただし、そのビューのパッケージをインストールすることによりビューが既に登録されている場合に限ります。

[デバイス マネージャ]では DevicePresets.xml ファイルを管理します。

メモ: XE8 で、MobileDevices.xml ファイルが DevicePresets.xml に名称変更されました。

任意の iOS シミュレータでのアプリケーションの実行

[プロジェクト マネージャ][iOS シミュレータ]プラットフォーム ノードの[ターゲット]ノードには、お使いの Mac にインストールされている Xcode でサポートされているシミュレータの完全なリストが表示されるようになりました。また、[プロジェクト マネージャ]には、各シミュレータの iOS バージョンも表示されます。サポートされている iOS バージョンのいずれかを搭載した指定のデバイス モデルでアプリケーションを実行できます。

XE8iOSSimulatorTarget.png

[機能ファイル]ダイアログ ボックスの必要に応じた自動表示

プロジェクトの配置構成に機能ファイルをいくつか追加しなければならなくなる可能性のあるファイルを[プロジェクト マネージャ]に追加すると、RAD Studio では[機能ファイル]ダイアログ ボックスのフィルタ処理済みビューが開くようになったため、必要な機能ファイルをプロジェクトの配置構成に含めることができます。詳細については、「[機能ファイル]のリストのフィルタ処理」を参照してください。

[プロジェクト マネージャ]での Android 向け組み込み RAD Studio Java ライブラリの無効化

XE8 では、プロジェクト マネージャに Android 用組み込み RAD Studio Java ライブラリがリスト表示され、それらライブラリのどれでも無効化することができます。アプリケーションに必要ない Java ライブラリを無効にして、アプリケーションを軽くすることができます。 詳細については、「Android 向けの組み込み Appmethod Java ライブラリの使用」を参照してください。

XE8DisableJavaLibrary.png

XE7 では、[プロジェクト マネージャ]を使って、Android アプリケーションにカスタム Java ライブラリをたやすく追加できました。ただし、RAD Studio では Android アプリケーションにデフォルトで組み込まれている不要な Java ライブラリを削除するには、カスタム classes.dex ファイルを手動で作成および配置する必要がありました。

IDE への Mercurial バージョン管理システムの統合

RAD Studio では、プロジェクトにおける変更を管理および追跡するためのバージョン管理システムとして、新たに Mercurial 分散バージョン管理システムをサポートするようになり、それが IDE に統合されています。

履歴マネージャには、統合された Mercurial バージョン管理ログ情報がローカル リポジトリから得られ表示されるようになりました。プロジェクトの変更は追跡され、その詳細を[内容]、[情報]、[差分]の各タブで参照できます。

Mercurial を使用すると、以下が可能になります。

  • リモート Mercurial リポジトリのコピーのクローンとその操作の開始
  • ローカル リポジトリへの変更内容のコミット
  • プロジェクトのリモート リポジトリ ログ データの表示

XE8 では、下記の Git 機能が IDE に追加されました。

  • リモート プライベート リポジトリでの認証
  • リモート Git リポジトリに対する変更内容のプッシュ変更内容のプル(リモートの最新の変更内容で作業コピーを更新)

IDE に統合されているバージョン管理システムの詳細については、以下を参照してください。

設定移行ツール

RAD Studio XE8 に付属している新しい設定移行ツールにより、RAD Studio と Appmethod の間およびこれらの製品の異なるバージョン間で構成設定のインポートとエクスポートを行えます。

移行ツールでは Borland Delphi 7 以降のあらゆるバージョンをサポートしています。

設定移行ツールでは、以下を実行できます。

migrationtool.exe ツールは C:\Program Files (x86)\Embarcadero\Studio\16.0\bin にあります。

詳細については、「設定移行ツール」を参照してください。

iOS アプリケーション コード署名の新規オプション

RAD Studio で iOS アプリケーションのコード署名に使用される署名データを選択できるようになりました。

[プロビジョニング]ページで、iOS デバイス ビルドの種類(開発アドホックアプリケーション ストア)のいずれに対しても、次のオプションを選択できます。

これらの値のいずれかを[<自動>]のままにしておく場合、RAD Studio では、CFBundleIdentifier およびターゲット デバイスと一致する適切なプロビジョニング プロファイルおよびデベロッパ証明書を選択します。詳細については、「[プロビジョニング]ページに必要な情報をすべて入力する」を参照してください。

32 ビット iOS と 64 ビット iOS を両方ともサポートする iOS バイナリを作成する新規オプション

2015 年 2 月 1 日以降、App Store に提出される新しい iOS アプリケーションはすべて 64 ビット iOS をサポートする必要があります。つまり、32 ビット iOS を搭載するデバイスをターゲットとするアプリケーションは 64 ビット iOS もサポートする必要があります。

IDE には、64 ビット iOS ターゲット プラットフォーム用の新しいコンパイラ オプション[iOS ユニバーサル バイナリ ファイルの生成 (armv7 + arm64)]が用意されています。
このオプションを有効にすると、32 ビット iOS と 64 ビット iOS を両方ともサポートするファット バイナリアプリケーションの配置時に IDE により生成されるようになります。

このオプションの場所は次のとおりです。

  • [プロジェクト|オプション...|Delphi コンパイラ|コンパイル|その他のオプション](Delphi の場合)
  • [プロジェクト|オプション...|C++ コンパイラ|拡張|その他のオプション](C++ の場合)

[プッシュ通知の受信]資格は iOS アプリケーションにはもう不要

iOS アプリケーションでプッシュ通知メッセージを受信できるようにするために、追加の[資格リスト]プロジェクト オプションを設定する必要はありません。
RAD Studio では、アプリケーションのインストール先のデバイスでプッシュ通知サービスを可能にするプロビジョニング プロファイルを使って、iOS アプリケーションにコード署名します。 詳細については、「プッシュ通知」を参照してください。

Castalia との統合

XE8 には Castalia が統合されており、IDE に専用メニューが用意されています。Castalia により、一部の作業をより簡単に実行できる機能が追加されます。Castalia の機能は次の 4 つに分類されます。

  • ビジュアル機能: コードの構造と実行フローをより明確に把握するためのビジュアル要素がコード エディタに追加されました。
  • コード エディタ内のコントロール: コードのナビゲーションに役立つコントロールが IDE に追加されました。
  • 非ビジュアル機能: コードの作成中に使用するための機能を提供するショートカット セットです。
  • Castalia のメニュー:機能およびコードの統計情報で、新しい専用メニューからアクセスできます。

Castalia の概要には、Castalia の機能の使用方法が表示されます。

顧客エクスペリエンス プログラム

IDE には、顧客エクスペリエンス プログラムに参加するための新しいオプションが統合されています。お客様は、このプログラムに参加して当社 Embarcadero による RAD Studio の改善にご協力いただくことができます。

顧客エクスペリエンス プログラムでは、セッション中の IDE の使用状況(RAD Studio の起動頻度、IDE でのナビゲーションなど)に関する情報が収集されます。この情報は完全に匿名になっています。このプログラムでは個人情報の収集や送信を行わないからです。

このオプションの場所は次のとおりです。

  • [ツール|オプション...|環境オプション|顧客エクスペリエンス プログラム]

詳細については、「顧客エクスペリエンス プログラム」トピックを参照してください。

ビジュアル面の変更とカスタマイズ

XE8 では、IDE の外見が変わりました。IDE の外見のカスタマイズ方法については、「IDE ビジュアル設定のシステム レジストリ キー」を参照してください。 変更点のいくつかを元に戻して XE8 IDE の外見を XE7 IDE の外見に近づけるには、次の手順に従います。

  1. 新規のテキスト ドキュメントを作成し(任意のテキスト エディタを使用できます)、それに次のテキストをコピーします。 Windows Registry Editor Version 5.00 [HKEY_CURRENT_USER\Software\Embarcadero\BDS\16.0\ModernTheme] "FontName"="MS Sans Serif" "FontSize"=dword:00000008 "MainToolBarColor"="clBtnFace"
  2. このファイルを .reg 拡張子で保存します。
  3. このファイルを実行します。レジストリの変更に関する警告が表示されます。変更を適用するには、これを受け入れる必要があります。
    メモ: レジストリ スクリプト ファイルを実行できるようにするには、管理者権限が必要な場合があります。レジストリ値を設定または変更したときに IDE が開いていた場合は、新しい値が有効になるように IDE を再起動する必要があります。

XE8 でのデータベースおよび接続機能の変更点

FireDAC の変更点

API の下記の変更に対応するように既存の FireDAC コードを更新しなければならない可能性があります。

基底メンバ* 変更点

FireDAC.Comp.Client.TFDAdaptedDataSet.OnError
FireDAC.Comp.Client.TFDCustomCommand.OnError
FireDAC.Comp.Client.TFDCustomConnection.OnError
FireDAC.Comp.Client.TFDCustomConnection.OnRecover
FireDAC.Comp.Client.TFDCustomSchemaAdapter.OnError
FireDAC.Comp.Client.TFDCustomTableAdapter.OnError
FireDAC.Comp.Client.TFDRdbmsDataSet.OnError
FireDAC.Comp.Script.TFDScript.OnError
FireDAC.Phys.TFDPhysDriverService.OnError

XE7 では、AInitiator は不変の IFDStanObject オブジェクト インターフェイスでした。

XE8 では、AInitiator は同じオブジェクトですが、代わりに TObject のインスタンスとして受け取ります。

FireDAC.Comp.Client.TFDCustomConnection.OnLogin

XE7 では、第 2 パラメータは AConnectionDef で、不変の IFDStanConnectionDef オブジェクト インターフェイスでした。

XE8 では、第 2 パラメータは AParams になりました。これは、XE7 で AConnectionDef.Params に格納されていたのと同じデータを格納する TFDConnectionDefParams のインスタンスです。

FireDAC.Comp.UI.TFDGUIxScriptDialog.OnProgress

XE7 では、AInfoProvider は不変の IFDGUIxScriptDialogInfoProvider オブジェクト インターフェイスでした。

XE8 では、AInfoProvider は同じオブジェクトですが、代わりに TObject のインスタンスとして受け取ります。

* 変更点は、上記のメンバを継承したメンバにも影響を及ぼします。

エンタープライズ モビリティ サービス

EMS 管理コンソール アプリケーション

EMS 管理コンソール アプリケーションは RAD Studio に付属しているサンプル アプリケーションであり、これを使用すると、EMS サーバーに格納されている EMS データの管理や、登録デバイスへの EMS プッシュ通知メッセージの送信を行えます。 このアプリケーションは、RAD Studio に付属しているサンプル ソース コードを使用して、必要に応じてカスタマイズすることもできます。

EMS 管理コンソール アプリケーションでは以下を行えます。

EMS 管理コンソール アプリケーションの使用方法およびソース コードの場所の詳細については、「EMS 管理コンソール アプリケーション」を参照してください。

64 ビット iOS デバイスとデータベースの互換性

64 ビット iOS デバイス プラットフォームが XE8 に追加されました。この新しいプラットフォームとデータベース管理システム(DBMS)の互換性は、32 ビット iOS デバイス プラットフォームで提供されている互換性と同じです。

  • FireDAC の場合: DataSnap、InterBase、IBLite/IBToGo、SQLite。FireDAC とデータベースの互換性の詳細については、こちらを参照してください。
  • dbExpress の場合: DataSnap、IBLite/IBToGo、SQLite。dbExpress とデータベースの互換性の詳細については、こちらを参照してください。

XE8 での[ビットマップ スタイル デザイナ]の変更点

  • [ビットマップ スタイル デザイナ]が更新されて、iOS および Android の現在サポートされているバージョン用の新しいスタイル テンプレートを提供するようになりました。
  • {{[スタイルの新規作成]ボタンを使用すると、iOS スタイル、Android スタイル、VCL スタイル、Windows スタイル、Mac OS X スタイル、Metropolis UI スタイル、さまざまな空のスタイルなどから、スタイル テンプレートを選択できます。
  • [1.5 倍解像度グラフィック用オブジェクトの新規追加][2.0 倍解像度グラフィック用オブジェクトの新規追加][3.0 倍解像度グラフィック用オブジェクトの新規追加]などの新しい[スタイル]メニュー コマンドを使って、さまざまな解像度用のオブジェクトを作成できます。
  • 新しい[オブジェクト テンプレートの追加]ツールバー ボタンを使って、オブジェクト テンプレートを追加できるようになりました。デフォルトのオブジェクト構造を使用することにより、設定済みテンプレートを調整したり、必要に応じてプロパティを割り当てるだけで済みます。
  • 新しい[全グラフィック解像度用オブジェクトの自動調整]コンテキスト メニュー コマンドを使用することにより、対象オブジェクトの他の適切な解像度を自動的に作成できます。
  • 新しい[オブジェクト スタイルのテスト]コンテキスト メニューのコマンドを使用すると、カスタム オブジェクトのテスト(およびさ、まざまな解像度でのそれらのテスト)を行うことができます。

XE8 でのサードパーティ製ソフトウェアの変更点

Delphi および C++ 用の Box2D

RAD Studio には、ゲーム用のオープン ソース物理エンジンである Box2D が用意されるようになりました。Box2D は、Delphi アプリケーションでも C++ RAD Studio アプリケーションでも使用することができます。

XE8 でのデバッガの変更点

iOS64 アプリケーションのデバッグはサポートされていません(ターゲット プラットフォームが[iOS デバイス - 64 ビット]の場合、F9 は有効になりません)。
代わりに、アプリケーションを[iOS デバイス - 32 ビット]をターゲット プラットフォームとして設定し、デバッグを完了したあと、[iOS デバイス - 64 ビット]をターゲット プラットフォームとして再ビルドしなければなりません。

XE8 でのテスト フレームワークの変更点

RAD Studio では、Delphi および C++Builder で DUnitX をサポートするようになりました。このテスト フレームワークを使用すると、テストを開発して Win32、Win64、Mac OS X で実行することができます。DUnitX には、多数の条件をテストする一連のメソッドが独自に用意されています。これらのメソッドは一般的なアサーションを表していますが、独自のカスタム アサーションを作成することもできます。

詳細については、「DUnitX の概要」を参照してください。

XE8 でのグラフィック ユーティリティの変更点

新規の GetIt パッケージ マネージャ

RAD Studio には、GetIt という新しいグラフィック ユーティリティが用意されています。GetIt は、GetIt パッケージのブラウズ、ダウンロード、RAD Studio へのインストールを無料で簡単に行えるパッケージ マネージャです。GetIt パッケージでは、ライブラリ、コンポーネント、IDE 拡張機能、SDK などが提供されます。

詳細については、「GetIt パッケージ マネージャ」を参照してください。==XE8 でのコマンドライン ユーティリティの変更点==

次の iOS 64 ビット用コンパイラが 2 つ新しく追加されました。

XE8 でのアプリケーション サンプルの変更点

XE6 で削除された以前のサンプルは SourceForge および XE6 docwiki で入手可能

XE6 で RAD Studio から削除された以前の製品サンプルへのアクセスの詳細については、「以前の製品サンプル」を参照してください。

ヘルプの変更点

新しいオフライン ヘルプ システム(H2 ヘルプを CHM ヘルプに差し替え)

RAD Studio に付属しているオフライン ヘルプ ファイルは Microsoft コンパイル済み HTML ヘルプ(CHM)形式になりました。詳細については、「ヘルプの使用方法 - CHM」を参照してください。これまで、オフライン ヘルプは H2 形式で提供され、Microsoft のヘルプ ビューア DExplore を使って閲覧されていました。

Microsoft のコンパイル済み HTML ヘルプ ビューアではオフライン ヘルプのみ表示できます。オンライン ヘルプにアクセスするには、ご自分でオンライン ヘルプを開くか、オフライン ヘルプのすべてのページのフッターに表示されている[現在の Wiki ページを表示]リンクをクリックする必要があります。オフライン ヘルプ ビューアでオフライン ヘルプとオンライン ヘルプのどちらを表示するかを選択することはできなくなりました。

独自の CMH ヘルプ ファイルを作成して RAD Studio にリンクすることができます。詳細については、「コンポーネント用のヘルプの作成」を参照してください。

関連トピック