新機能

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

メインページ への移動

RAD Studio 11.0 Alexandria リリースには、次の新機能および改善機能が含まれています。

目次

新しい IDE の拡張

高 DPI の IDE

Delphi、C++Builder および RAD Studio IDE は、高 DPI が有効になりました。高 DPI を有効化しての実行は現在、実行時のオプションです。 IDE ですべてのウィンドウで 高 DPI をサポートしています。これには、あるモニターから別のモニターへドラッグしている際の、スケールの変更などの動作が含まれます。IDE の機能については、次を参照してください:

  • メイン ウィンドウ
  • すべてのドック可能なウィンドウ(オブジェクト インスペクタ、プロジェクト、構造、メッセージ、など)。同様にすべてのオブジェクト インスペクタ プロパティ エディタも。
  • すべてのダイアログ(新しい項目、IDE オプション、プロジェクト オプション、情報、など)。
  • すべてのコンテンツ ウィンドウ(エディタ、フォーム デザイナ、履歴など)。

IDE スタイル(ライト、ダーク、Mountain Mist)も同様に、高 DPI をサポートするよう更新されました。

VCL フォーム デザイナ用の高 DPI

RAD Studio 11.0 では、VCL フォーム デザイナはスケールを 3 つの方法で処理することができます。これは、[ツール|オプション...|ユーザー インターフェイス|フォーム デザイナ|高 DPI ] よりカスタマイズすることができます。利用可能なオプションは、自動(画面 PPI)、低(96 PPI)、および、特定の PPI 値を指定可能な場合には、[ユーザー編集可能]です。

FMX フォーム デザイナ用の高 DPI

FireMonkey デザイナは、FMX フォームが実行時に行うのと同様の方法で、フォームのスケール調整を行います。座標は同じに維持されます(つまり、(20, 20) にあるボタンは、FMX デザイナが表示されているモニタのスケールがどれだけ 高 DPI だったとしても、(20, 20) の位置に配置されます)。これは、ビジュアル スケールのみです。

ウェルカム ページ

新しい VCL ベースの ウェルカム ページが IDE に追加されました。次のように設計されています:

  • 複数のフレームを保有でき、必要に応じて追加、削除、または位置とサイズを再調整可能
  • 高 DPI での最適なスケーリング
  • 同時技術を利用

オープン ツール API の変更

イメージ(スプラッシュ画面サービス、情報ボックス、IDE インサイト、その他領域など)を渡す、すべての API が、高 DPI イメージをサポートするように更新されました。これにより、複数の解像度を持つ同じアイコンを渡すことができ、内部イメージ コレクションに追加され、仮想イメージ リストと共に使用されます。このメソッドは、任意の TGraphic の配列を取りますが、PNG イメージを推奨します。

デザイナの VCL スタイル

VCL コントロールは、デザイナにおいてスタイルを使用してレンダリングすることができます(任意)。

警告: この機能は、デフォルトでは有効になっておらず、ツール オプション ダイアログの[ユーザー インターフェイス|フォーム デザイナ]セクションでオンにすることができます。このオプション名は[VCL スタイルを有効にする]です。

StyleName プロパティ エディタは、プロジェクトで使用可能なスタイルを反映し、プレビュー(ボタンの外観)をレンダリングします。「Windows」を選択した場合はプラットフォームのスタイルが選択され、プロパティを空のままにした場合は、親コントロール(または親フォーム)のスタイルが使用される点に注意してください。

VCL フォーム デザイナには現在、従来の Windows フレームではなく、カスタム Windows 10 スタイルのタイトル バーとフレームがあることに注意してください。フォーム スタイルが設定されていない場合、Windows 10 スタイルが使用されます。フォームが VCL スタイルを使用するよう設定されている場合、フレームは、フォームの選択されたスタイルを反映されます。

フォームのデザインとコード編集

10.4.2 では、[設計]タブは、フォームが別のウィンドウで設計されている場合に無効化されます。現在、タブは常に有効になっていますが、別のウィンドウで設計されている場合は、メッセージが表示されます。ボタンをクリックすると、そのデザイナを現在のウィンドウに移動できます。

オプション ダイアログのパフォーマンス

オプション ダイアログ(IDEとプロジェクト オプションの両方)は、以前のリリースの何分の1かの時間で読み込まれます。以前は、ダイアログを開いたときにすべてのページが読み込まれていました。現在、ページは、表示する必要がある場合にのみロード(およびコントロールの作成)されます。

サード パーティ ベンダーは、設定フレームへの影響について、この変更に注意する必要があります。

FireMonkey の設計ガイドラインとマージン

バージョン 11.0 における FireMonkey デザイナでは、ガイドラインと VCL デザイナにある他の機能を、異なる実装で導入しています。コンポーネント ヒントが、ユーザーが移動またはサイズ変更した際に表示されます。また、コントロールは、サイドでの位置揃えのためのガイドラインを提供し、線を横切る標準マージン距離を表示します。

フォームとコンポーネントのサイズ変更コントロールは、VCL フォームデザイナと同じルック&フィールになりました。

Visual Studio のコード エディタおよびその他のエディタのための DelphiLSP

RAD Studio 11.0 DelphiLSP は、その他のエディタでも使用できます。この一部として、DelphiLSP を使用する Visual Studio Code 拡張を構築しました。

この機能についてさらに知りたい場合には、こちらを参照してください。

支援機能 (DelphiLSP) における改善点

DelphiLSP

RAD Studio 11.0 における LSP では、品質に焦点を置き、従来の支援機能のより堅牢な代替品であることを保証します。主な改善点には、インクルード ファイルが含まれているユニットを解析できること、サーバーの再起動時まわりの向上、サーバーが認識できる構文要素の向上などがあげられます。

従来のコード補完の終了

Delphi の従来のコード補完は、IDE より削除されました。LSP オプションのみが Delphi 支援機能で使用できます。

ビルド イベントの警告

ビルド イベントは、システム上で任意のコマンドを実行することができます。一般的なところでは、ビルド イベントを含む、サード パーティ オンラインからのプロジェクトの取得などが挙げられます。RAD Studio では、プロジェクトがいずれかの構成においてビルド イベントを保有している場合に(現在ビルドしていないものも含む)、警告を出すようになりました。

警告: プロジェクトを信頼のおけるものとマークし、より新しい修正されたバージョンを取得することも、そして以前はビルド イベントを含んでいなかったが、その新しいバージョンで含んでいたとしても、警告が表示されないようにすることができます。これは、ユーザーを支援することを目的としたセキュリティ緩和策ですが、すべての状況で完全に予防するものと見なしてはなりません。

IDE のその他の変更点

コード エディタが、デフォルトのフォントとして Consolas を使用するようになりました。その他数多くの一般的なフォント(Fira Code など)が IDE にインストールされています。エディターは合字をサポートしていませんが、これらの新しいフォントを使用して高 DPI テキストを鮮明にレンダリングできる点に注意してください。「メッセージの表示」がエディタのコンテキスト メニューに復元されました。

支援機能の進捗バーは、作業が完了すると非表示になります。

Delphi ツールチェーンにおける改善点

新しい macOS ARM 64 ビット ターゲット プラットフォーム

RAD Studio 11.0 は、新しい Delphi ターゲット プラットフォームである、macOS ARM 64 ビットをサポートし、macOS11 で新しい M1 Apple Silicon CPU を基盤プラットフォームとしています。このプラットフォームを使用して、ネイティブ M1 アプリケーションを構築できます(もちろん、これには M1 ハードウェアを実行する必要があります)。 Intel 64 ビット ターゲットのサポートと、ARM バイナリと Intel バイナリの両方を含むユニバーサル バイナリ アプリケーションの作成を、1 つのパッケージで維持します。

ユニバーサル バイナリ

Intel コードと ARM コードの両方を含むユニバーサル バイナリを作成できます。これを行うには、ターゲット プラットフォームが macOS ARM 64 ビットであることが必要です。プロジェクト オプション(macOS ARM 64 ビットが現在のターゲットであることを確認)で、[ビルド|Delphi コンパイラ|コンパイル|その他]に移動し、[macOS ユニバーサル バイナリ ファイルの生成 (x86_64 + arm64)]をオンにします。アプリケーションが配置されていることを確認してください。ユニバーサル バイナリ ファイルは OSXARM64\Debug フォルダにあります。

macOS の廃止予定

RAD Studio 11.0 リリースでは、Macapi.QTKit ユニットは macOS/X64 で廃止予定となっており、macOS/Arm64 ライブラリから削除されています。また、"Macapi.Quicktime" ユニットも、macOS/X64 と Arm64 の双方のライブラリに対して、製品から削除されています。

バイナリ リテラルと数字の区切り文字

Olympus での Delphi 言語には、10進数と16進数に加えて、バイナリ リテラルのサポートが追加されています。バイナリ リテラルは、接頭辞として % 記号を使用します(他の Pascal コンパイラで使用されるのと同じ構文):  

const
  Four = %100;
var
  x: Integer;
begin
  x := %1001001;

この言語では、桁数の多いリテラル値の可読性を向上させるために使用できる、桁区切り文字も導入されています。区切り文字はアンダースコア「_」であり、コードの解析およびコンパイル時、基本的には無視されます。これは、C#7.0で導入された機能と非常によく似ています。

const
  AMillion = 1_000_000;

もちろん、バイナリ リテラルでは数字の区切り文字を使用できます。

AVX 命令に対するインライン アセンブラのサポート(AVX-512)

AVX2(ymm)やAVX512(zmm)など、新しい命令セットの asm コードのサポートが導入されました。

注意: この機能をテストするには、AVX-512 互換の CPU (最近の INTEL CPU の1つなど)が必要です。詳細については次を参照してください: https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512

C++ ツールチェーンにおける改善点

新しい C++ コード フォーマッタ

C++ で使用されていたコード フォーマッタ技術が完全に置き換えられました。コード整形は、現在 clang 形式を採用しています。C++ の新しいフォーマッタのオプションは、[言語|C++|整形]で確認することができます。コードはいつでも手動で整形できますが、保存時や入力時にでも IDE に自動的にコードを整形させることも可能です。この後者の 2 つは、[自動整形]設定で制御します。保存時に整形するか、改行時に整形するかに設定します。

IDE は、ソース フォルダにある .clang-format ファイルで指定された整形用設定を使用します。これは一般的な C++ プロジェクトの規則です。 これが見つからない場合、オプション ダイアログ(上記)で選択された形式が使用され、そこでのデフォルトは Embarcadero 推奨の形式です。

C++ / Delphi 互換性

Delphi 型でも C++ 互換 RTTI が利用可能になりました。make_shared が Delphi 型で使用でき、C++ における Delphi 型の使用を支援するための型変換が提供されています。

Delphi 型用 C++ 互換 RTTI

これまで、C++ の型情報は Delphi 型には利用できませんでした。つまり、typeid(delphi-type) の結果へのアクセスは(ここでの delphi-type は Pascal コードからの型、または C++ での Delphi スタイル クラス)、AV となりました。typeid は、ある型に対してはシンプルに std::typeinfo を、もしくはそのインスタンスの大抵の派生型に対しては、多態性型を返す点に注意してください。

typeid() は、std::typeinfo を返し、Delphi 型に対しては C++ 互換 RTTI が生成されるようになりました。

Delphi クラスでスマート ポインタを使用する

std::make_uniquestd::make_shared の両方を Delphi スタイル クラス(Delphi で定義されているもの、または C++ だが Delphi で定義されているものから継承している)で使用できるようになりました。

型変換

RTL には、Delphi 型と C++(および Delphi)文字列の間の型変換のためのヘルパ メソッドが含まれるようになりました。これには、TDateTime から文字列型への変換が含まれています。また同様に、C++ 文字列から Delphi 文字列への変換(割り当て)や、Delphi 文字列に対して std::string_view を使用することも容易に行うことができます。文字列との間の型変換 文字列(UnicodeString、WideString、AnsiString。codepage によるテンプレートを含む)との間での変換を行うため、多くの型に対して、to_string() および from_string() メソッドが提供されました。これらのメソッドは、次の型に対して用意されています:

  • Currency
  • TDateTime
  • 32 および 64 ビットの符号つき/符号なし整数型
  • 浮動小数点数型(拡張型)
  • バリアント

その他

  • Clang コンパイラは、インターフェイスが IUnknown から派生していいない場合に、警告を発するようになりました。
  • C++ Win64 デバッガを使用してプロセスにアタッチできるようになりました。
  • プロジェクトのバッチ コンパイルが .c ファイルを無視してしまう問題は解決されました。

VCL および FireMonkey における変更

RAD Studio 11.0 では、VCL ライブラリに対して、小さな改善の数多く行いました。その際、残っていた XP 関連のものと Windows 10 と整合性が取れないものを削除し、コアのライブラリ機能を向上させることに集中しました。

RichEdit 4.1 (MSFTEDIT.dll) に更新された TRichEdit コンポーネント

VCL TRichEdit コンポーネントの実装を更新し、プラットフォーム コントロールのより最新のバージョンをサポートするようにしました。さらに、TDBRichEdit.Lines が public プロパティとなりました。RichEdit URL の検知は、EnableURLs、ShowURLHint、SetSelTextToFriendlyURL と同様、新しい機能です。

RichEdit のテキスト属性に対して変更が行われており、BackColor、Disabled、Hidden、Link、Offset、RevAuthor、Subscript などのプロパティが追加されています。TParaAttributes にはまた、新しい型やプロパティもあります。最後に、TCustomRichEdit には、新しい public メソッドができました。

VCL モダン化作業

新しいデフォルト フォント

VCL アプリケーションでは、デフォルト フォントは Segoe UI 9 です。VCL スタイルのタイトル フォントは同じデフォルト フォントを踏襲するようにしました。

メモおよび RichEdit のマージン

TCustomMemo での新しいプロパティが、TMemo、TDBMemo、TRichEdit、TDBRichEdit に公開されました。

フレーム無しラジオグループ

TCustomGroupBox では、この public プロパティを TGroupBox で公開していますが、ShowFrame、HeaderFont、DefaultHeaderFont が格納されています。

TComboBox の DropDownWidth

TCustomComboBox とその下位クラスには 2 つの新しいプロパティ(TCustomComboBox クラスで public であり、TComboBox クラスで公開される)、DropDownWidth と AutoDropDownWidth があります。

TTreeView の CheckBoxes サポート

TTreeView は、CheckBoxes をサポートする新しいプロパティを定義しています。これについては、こちらから詳細が確認できます。

TWICImage のマルチ フレーム サポート

TWICImage のマルチ フレーム サポートでは、TWICImage 型で 2 つの新しいプロパティがあり、FrameCount と FrameIndex と定義されています。これらの新しいプロパティにより、マルチフレーム イメージ ファイルにおいて、利用可能なフレームすべてを読み込むことができます。

新しい TLabelDBEdit コンポーネント

データ対応バージョンの TLabeldEdit VCL コントロールが追加されました。これを実装するため、関連コントロールの階層が変更されました:

  • TCustomLabeledEdit
  • TCustomMaskEdit から継承
  • 新しいプロパティ: Align、EditMask、など。TCustomMaskEdit から継承
  • TDBEdit
  • TCustomLabeledEdit から継承
  • TDBLabeledEdit
  • 新しいコントロールは TDBEdit から継承

また、RAD Studio 11.0 では、TFlowPanel および TGridPanel コンテナにおける、TLabeledEdit コントロールのサポートが追加されています。

エラー メッセージの向上

  • ストリームからのフォームの作成でエラーとなった場合、エラー メッセージにはフォームのファイル名が含まれるようになりました。
  • 例外ダイアログには、エラー メッセージをクリップボードにコピーするため、[コピー]ボタンが追加されています。

クールバーでの 2 重山かっこ(Chevron)のサポート

クールバーが新しい Boolean プロパティの ShowChevron により、2 重山かっこをサポートするようになりました。

NumberBox

10.4.2 で導入された TNumberBox クラスにはいくつか追加機能があります:

  • CurrencyFormat 型は、Byte から TNumberBoxCurrencyFormat に変更されました。
  • 新しい ValueCurrency プロパティがあります。
  • DisplayFormat プロパティが公開されました。

スレッドの安全性が向上しました。

一般的に、UI コントロールは main UI スレッドで作成される必要があります。VCL コントロールをバックグラウンド スレッドで作成すると、この動作は未定義であり、かなりあいまいなアクセス違反を起こす可能性があります。

このため、新しいクラス プロパティがあります: TControl.RaiseOnNonMainThreadUsage

このプロパティが True の場合、TWinControl ウィンドウ ハンドルが、main スレッドではないスレッドで作成された場合に、VCL は例外を挙げます。これにより、これが偶然に発生した場合の問題も回避されます。COM シナリオおよびその他の場合では、セカンダリ スレッドでのハンドルの作成は妥当であるため、そのまま許可されています。

通常ユニットに変換された VCL StyleUtils.incconverted

インクルード ファイル StyleUtils.inc は通常ユニットに変換されており、開発者(およびコンポーネント ベンダ)は、VCL スタイルのサポートと自分たちのコードをさらに統合しやすくなりました。実際、以前のインクルード ファイルは、新しいユニットとは異なり、一般に変更および拡張が不可能な定義済みのプライベート タイプでした。

注意: コードをユニットに移動して一部のデータ型を公開してアクセス可能にすることは了承しておりますが、このスタイル API を変更する権利は保持しており、VCL および RTL のライブラリが概して提供する、外部コードと同レベルでの互換性は保証しておりません。

より小規模な変更点

  • どのようにプロパティ EncodingIndex と ShowEncodingList を公開するかを指定する共通ダイアログ (ドロップダウン エンコーディング リストが有効か、それにより利用可能かどうかを制御する)
  • TTrackbar の OnTracking イベント(追跡バーのサムの位置が変更した際にトリガとなる)
  • 追加されたパラメータ CheckTabEnabled により、TPageControl.FindNextPage でスキップするオプションが無効になっています。
  • TButtonCategory には VisibleGutter プロパティがあります。
  • TDateTimePicker と TRichEdit は有効ではない場合にも適切に表示されます。
  • 本リリースでは、TScrollBox はマウス ホイールを自動的にサポートします。-- この変更により、新しくデフォルトでは、フォーカスがないコントロールに対してもマウス ホイールを有効になっているため、既存のアプリケーションの動作に予期しない形で影響するかもしれない点に注意してください。
  • VCL 関数 ScaleImage は、アルファ チャンネルをサポートします。
  • TVirtualImageList.Images には、適切なプロパティ設定関数が用意されました。
  • TTreeNode では nsDropHilited 状態がサポートされています。
  • デフォルト フォーム サイズがより大きくなりました。
  • SetSelText および SetSelTextBuf では、Undo バッファをリセットしないオプションが提供されました。
  • これは、新しいプロパティ CanUndoSelText によって管理されます。後方互換性を維持するため、これはデフォルトでは False です。True に設定された場合、SetSelText や SetSelTextBuf への呼び出しによって、または、SelText プロパティへの代入によって行われた変更を、Undo を呼び出し(または UI で Undo オペレーションを呼び出し)て元に戻すことができます。
  • TEdgeBrowser の小規模な改善
  • TCustomTitleBarPanel には、プロパティが TitleButtonClose、TitleButtonRestore、TitleButtonMin、そして OnUpdateTitlebarButtons イベントがあります。
  • TDateTimePicker により、UI で日付と時間の変更が一緒にできるようになりました。
  • TPngImage オブジェクトは、TWICImage オブジェクトとの間での割り当てを処理します。
  • TWinControl は LockDrawing と UnlockDrawing をサポートし、WM_SETREDRAW Windows メッセージの実行のトリガとなります:
  • メソッド TWinControl.LockDrawing はコントロールの更新を無効にします。
  • メソッド TWinControl.UnlockDrawing はコントロールの更新を有効にします。
  • プロパティ TWinControl.IsDrawingLocked は、LockDrawing が呼び出された際に(そして UnlockDrawing が呼び出されてない場合に)、True を返します。
  • プロパティ TWinControl.RedrawDisabled は、Win32 コントロールの描画が無効の場合に、True を返します。

FireMonkey

FireMonkey については、一部の主要なリファクタリングにフォーカスをおきました。特にデスクトップおよび Windows に集中して更新を行いました。macOS および Windows のプラットフォーム サービスは、個別のユニットに整理され、IFMXMultiDisplayService と TDisplay の拡張、FMX.Platform.Metrics へのすべての測定関連サービスの抽出フォームの制約サイズ、そして他にも次のリファクタリングが行われています:

  • IFMXSaveStateService
  • IFMXDeviceService
  • IFMXVirtualKeyboardService
  • IFMXTimerService
  • IFMXLoggingService
  • IFMXMenuService

Google Play Billing Library Version 4

RAD Studio 11.0 は、Google の Billing API の最新バージョンのサポートを提供します。これは、Play Store アプリで今年後半に必須となる更新です(最終期限は2021年11月です)。新しい API は FMX ライブラリとシームレスに統合されており、ユーザーのコードは新しい API に簡単に適応させられるはずです。

Android API 30 のサポート

Android API 30 では、次の変更が含まれています:

  • Android API 30 のターゲットのサポート(2021 の Google Play Store の要件)
  • また、古い “サポート ライブラリ” ライブラリを、新しい “AndroidX” ライブラリに移行しました。

また、Android では、RAD Studio は “multidex” 機能(これにより、アプリケーションが複数の “classes.dex” ファイルを生成できるようになる)をサポートしており、Java バイトコードを DEX のものにコンパイルする際に、より新しい “D8” DEX コンパイラを、古い “DX” コンパイラの代わりに使用しています。新しいリリースには異なる Java ライブラリのセットが含まれているため、古いプロジェクトには互換性がありません。古いバージョンの RADStudio で Android プロジェクトビルドを開く場合は、次のことを行う必要があります:

  • ドッキング可能な[プロジェクト]ウィンドウに移動します。
  • アクティブ ターゲット プラットフォームとして、Android 32 ビットか Android 64 ビットを選択します。
  • ライブラリ ノードを右クリックします。
  • メニュー項目[システム ファイルをデフォルトに戻す]をクリックします。

その他の改善点

  • FireMonkey アクセサビリティ パックが、コア製品に統合されました(別のダウンロードではなくなりました)。
  • スタイルおよびプラットフォーム コントロールの組合せに対する Z オーダーの管理の改善
  • 古い廃止予定だった、範囲なし列挙値(2014 に廃止予定の列挙型をサポートするために追加された FMX ヘルパ クラス)の削除
  • Android プラットフォーム上での TWebBrowser におけるファイル アップロードのサポート

RTL とデータ

RAD Studio コア ライブラリにおいて、数多くの改善作業が行われています。ここれは、RTL、FireDAC、HTTP and REST クライアント ライブラリなどに渡る、主な変更の概略を提供します。

プラットフォーム識別子

RTL では、macOS/Arm64 プラット用に、新しいプラットフォーム識別子、pidOSXArm64 が追加されています。既存の識別子 pidAndroid32Arm および pidAndroid64Arm は、新しい pidAndroidArm32 と pidAndroidArm64 に置き換わります。現在、すべてのプラットフォーム関連の識別子は、コンパイラの同じ形式と順番を使用しています: <プラットフォーム名> <アーキテクチャ名> <ビットネス>

RTL: TZipFile

ZIP ファイル(つまり、RTL の TZipFile クラス)については、品質、機能向上、最適化について集中して行いました。Zip64 サポートや、TZipFile にファイルを削除するメソッドを追加し、また、TZipHeader には GetFIleName メソッドを、TZipFile.IsValid() はストリーム パラメータを受取り、System.Zip は 4GB 以上のサイズで作業できるようにしました。

RTL 大規模データ構造における改善点

64 ビット コンパイラ下で、より大きなメモリ構造に適切なデータ型を使用するため、いくつかの改善を行いました。たとえば、64 ビットの TMemoryStream は、2 GB を超えるデータ構造をサポートします。これに関連して、新しいメソッド TThread.GetTickCount64 を追加しました(32 ビット値を返す既存の TThread.GetTickCount は、互換性のために RTL に残ります)。

新しいレコード ヘルパ

TDateTime の新しいレコードヘルパーがあります。これには、実際には NowUTC と呼ばれる "UTC Now" 関数(元の Date RTL では使用できません)が含まれています。このリリースでは、TDoubleHelper と同様に、Delphi の TCurrency データ型のヘルパーである TCurrencyHelper も導入されています。

Bluetooth および BLE における改善点

この分野での改善点には、従来の Bluetooth と Bluetooth LE の両方、およびほとんどのプラットフォームが含まれており、特にWindows 10 と Android に重点が置かれています(ただし iOS と macOS にも)。改善には、ビーコンのサポートも含まれます。

RTL におけるその他の強化点

ジェネリック型コレクションの向上

複数のジェネリック型を使用する場合、一部のジェネリック型コレクションでは、ジェネリック型のシンボリック名として TKey と TValue が使用されていました。TValue は RTL の特殊型であるため、これは混乱を招きます。混乱をさけるため、このシンボリック名は変更されました。ジェネリック型がインスタンス化された際には、このシンボリック名は実際の型に置き換わるため、既存のコードに影響はありません。さらに、コレクション クラスには、次のような値の配列をパラメータとして取るコンストラクタが追加されました:

procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);
virtual;
constructor TList<T>.Create(const Values: array of T);
constructor TDictionary<TKey, TValue>.Create(const AItems: array of TPair<TKey, TValue>);

TDictionary Capacity、GrowThreshold、およびハッシュの実装が改善され、パフォーマンス / メモリ使用量 / 最小限の衝突、とバランスが改善されています。内部実装クラス TListHelper は削除され、強く型付けされたフィールド TArray<T> を使用して、関連するすべてのストリーミングおよびデータ マッピング コードを更新するようになりました。

RTTI

RTTI へのオープン配列のサポート: これにより、RTTI を介してオープン配列パラメータを持つメソッドを呼び出すことができ、TVirtualMethodInterceptor でオープン配列の引数をサポートすることも可能になりました。TValue には、TDateTime に特化したサポートが追加されており、また、TValue とバリアント型のやり取りが向上しました。

PPL

PPL スレッド プールの統計情報がアクセスしやすくなっており、これに伴い、ThreadPoolStats.Get メソッドは public となりました。

ストリーム

新しい TPointerStream クラスでは、ポインタの場所やサイズを示すことで、TStream インターフェイスを使用したインメモリ データの読み書きが可能になっています。TStream.CopyFrom はサイズを要求せず、未知のままの場合があります。Count が大規模の場合、このメソッドもまた最適化されました(400% 向上)。

日付から文字列への変換

日付から文字列へ、またその逆の変換が向上されました。注目に値するのは、StrToDate が「現在まで」の書式文字列を厳密にフォローしており、月と日の名前を含む日付書式をサポートし、また、内部に任意のテキストを含む日付形式もサポートしている点です。また、TFormatSettings の日付/時刻関連のプロパティの初期化を改善しており、すべてのプラットフォームでの表現を統合しています。

インターフェイス インスタンスの作成

新しい System.Generics.Defaults._MakeInterfaceInstance では、インターフェイス インスタンスの作成が可能であり、すべてのインターフェイス メソッドは匿名のメソッドで表されます。

TNoRefCountObject

新しいクラス System.TNoRefCountObject は、参照カウントされない IInterface 実装(古くて奇妙な名前の TSingletonObject を置き換えます)。

最適化とその他

  • 最適化された _FinalizeRecord と _FinalizeArray
  • 従来の TDatamodule.OldCreateOrder プロパティは削除され、デフォルトが常に True に設定されるようになりました。このプロパティがフォーム ディスクリプション ファイルに存在する場合には、無視されます(が、エラーは起こりません)。従来のプロパティは、かなり以前の Delphi 初期のバージョンにおける古い生成ロジックとの互換性のために使用されていたものです。
  • 改善された Pascal System.Pos
  • TArray<T>.BinarySearch の最適化
  • TList<T>.Sort( ...、Index、Count ) のオーバーロード追加
  • System.IOUtils.TFile.Size の追加
  • ClassParent および InitInstance での TObject のパフォーマンスの修正
  • System.IOUtils.TPath でのいくつかの改善
  • 260 文字を超えるシステム パスの RTL サポート(Windows の最新バージョンなど、オペレーティング システムでサポートされている場合)
  • クラス プロパティ TThread.OnSynchronize の追加
  • EInOutError and EInOutArgumentException メッセージには、パスが含まれ、Path フィールドが含まれました。

以下のパフォーマンスが改善されました:

  • _UInt32ToHexString と _UInt64ToHexString
  • TSingleHelper と TDoubleHelper の解析と TryParse

TGUID データ構造体が System.pas でのみ定義されるようになりました。

JSON

  • ParseJSONValue() を TJSONObject から TJSONValue へ移動
  • Integer 用の TJSONObject.AddPair のオーバーロードを追加

UTF8ToString の変更点

AnsiChar の配列を取る UTF8ToString オーバーロードは削除され、UTF8ToString(array of Byte) は廃止予定となりました。削除された関数は、 UTF8ToString(const S: _PAnsiChr です。

回避策については、System.UTF8ToString を参照してください。

FireDAC

  • PostgreSQL ドライバは、v.13 までの PostgreSQL をサポートしています(PostgreSQL ストアド プロシージャのサポートを含む)。
  • Oracle 19c および 128 文字パラメータ名の Oracle ストアド プロシージャを公式にサポート。
  • soDigitsAsNumbers を持つ拡張 TFDSortOption。System.SysUtils 内の TCompareOption に該当します。
  • Firedac モニタ UI の改善
  • 改善された Firebird ドライバは、/bin サブフォルダ(古いバージョンの Firebird での正しい場所)ではなく VendorHome 内をドライバを検索するようになりました。

Internet、HTTP、REST クライアント ライブラリ

  • バックエンドおよび EMS クライアント コンポーネントのタイムアウト メカニズム:
  • TEMSProvider、TKinveyProvider、TParseProvider クラスには、新しいプロパティが 2 つあります: ConnectTimeout と ReadTimeout
  • TEMSApi.TConnectionInfo、TParseApi.TConnectionInfo、TKinveyApi.TConnectionInfo: 変数 ConnectTimeout と ReadTimeout があります。
  • TDSRestConnection もまた ConnectionTimeOut を表示します。
  • HTTP / 2 の Windows サポートの追加
  • 新しいプロパティ THttpClient.ProtocolVersion
  • 新しいプロパティ TNetHttpClient.ProtocolVersion
  • 新しい TBase64URLEncoding エンコーディングと TNetEncoding.Base64URL プロパティ
  • すべてのプラットフォームにおける、全 RTL で、gethostbyname から getaddrinfo への切り替え。
  • 新しい TCertificate.PublicKey。公開キー モジュールを含んでいます。
  • ContentType が列挙型ではなく文字列型になりました。これにより、任意のコンテンツタイプの文字列が使用できるようになりました。RestRequest における新しい CustomContentType
  • TNetHTTPClient for Windows における TLS 1.3 のサポート
  • TSocket における複数の改善
  • 新しいコンポーネント TRESTRequestDataSetAdapter は、JSON を介したサーバーへの TDataSet (例、TFDMemTable)データのアップロードを簡単にします。これは、サーバー側での TRESTResponseDataSetAdapter REST コンポーネントのコンパニオンです。
  • TRestClient コンポーネントは、基盤とする HTTPClient コンポーネントの SecureFailureReasons プロパティを表示します。
  • Vcl.Styles ユニットで、TCustomStyle クラスである FCustomElements と FSource は、protected セクションで宣言されるようになりました。

インターネット サーバーのテクノロジー

WebBroker

ISAPI DLL スレッドには設定可能な StackSize が提供され、変数 Web.Win.ISAPIThreadPool.StackSize を使用します。2 GB(MaxInt)を超えるファイルを送信/ストリーミングする場合のWebBrokerのパフォーマンスが大幅に向上しました。

RAD サーバー

RAD サーバーのマルチパート/フォームデータのサポート

DataSnap

DataSnap: REST URI は、新しいメカニズムを用いて設定可能になりました。TDSMethodMapEvent イベントをベースとしています。

インストーラにおける変更点

RAD Studio 11.0 インストーラには、いくつか顕著な変更が行われています。

  • 最小インストーラは、高 DPI 画面でも適切に表示されるようになりました。ラジオ ボタンおよびチェックボックスも適切に表示されます。
  • 最小インストーラは、従来のように OS 検知によるものではなく、言語選択オプションを表示するようになりました。これにより、普段はドイツ語やフランス語、日本語などの Windows を使用している、英語版の RAD Studio をインストールしたい人に、スムースなエクスペリエンスを提供するでしょう。
  • インストール ファイルのための、新しい Catalog Repository フォルダ選択により、非常に大きなインストール ファイルでも、パブリック ドキュメント フォルダの下ではなく、任意の場所にそれを保持することができます。
  • インストールが高速になりました。複雑な機能のダウンロードでは、複数のファイルのダウンロードが並行して行われます。圧縮ファイルのダウンロードと抽出にも並列処理はありますが、機能のインストールについては順番に行われます。インストール時に表示される情報は、状況に応じて変更されるようになっており、10.4.x において表示されていた "機能名" は削除され、各機能についてダウンロードされたファイルの数と置き換わっています。


関連項目