web-dev-qa-db-ja.com

Delphi言語の機能とそれらが導入/廃止されたバージョンのリスト

始める前に、私はGoogleを介してそのようなことを正直かつ真剣に繰り返し徹底的に検索し、見つけられなかったことを指摘したいと思います。

(開発中のプロジェクトの場合)すべてのDelphi(2007から最新リリースバージョンまで、2007年より古いバージョンはサポートしていません)、「言語機能」、およびそれらが導入されたバージョン(該当する場合)廃止、改善、または削除。

以前にStack Overflowでこれと同様の質問に注意しましたが、それらのほとんどは「どの機能が最適か」という形で表現され、不適切と思われるため閉じられました。

誰かがそのようなリストを知っている(またはコンパイルするのに十分な時間がある)場合、私は非常に感謝します。

受け入れられた回答には、そのようなリストへのリンク、またはリスト自体が含まれます。

108
LaKraven

この回答は、新しい言語機能のみをリストしていることに注意してください
not新しいVCL/FMX機能。

RAD Studio docwikiへのリンクは次のとおりです。

Embarcaderoの完全なリスト: What's New
以下も参照してください: David I's list


要約する:

Delphi 10.3.x、10.4(まだ出ていません、これは投機的です)

Delphi 10.

  • 64ビットLinuxコンパイラはARCを使用しなくなりました 、代わりにデフォルトの手動管理を使用します。これはWindowsコンパイラと同じです。これにより、WindowsまたはOSXからLinuxへのコードの移植がはるかに簡単になります。
  • インライン変数 自動型推論あり
  • Linuxでの有効化における8ビットAnsiChar/AnsiStringのサポート。
  • C++ BuilderとDelphiは、すべての呼び出しに同じABIを使用するようになりました。

Delphi 10.2東京

Delphi 10.1 Berlin

Delphi 10 Seattle

  • Android 5.1.1およびiOS 8.4のサポート
  • OSX例外処理の改善

Delphi XE8

  • 64ビットiOSのサポート。
  • 新しい整数型: FixedIntFixedUInt すべてのプラットフォーム上の32ビット整数型。
  • 新しいプラットフォーム依存の整数型: LongIntLongWord (iOS-64では64ビット、他のすべてのプラットフォームでは32ビット);

Delphi XE7

Delphi XE6

Delphi XE5

Delphi XE4

XE4では、$ ENDIFが$ IF、$ IFDEF、$ IFNDEF、および$ IFOPTの受け入れられるターミネーターになるように変更されました。

Delphi XE

Delphi XE2

Delphi XE

  • XEでは_{$STRINGCHECKS}_コンパイラ指令は無視されます。
  • _{$ALIGN}_ディレクティブの新しい16バイト値:_{$ALIGN}_ディレクティブの許容値には、1、2、4、8、および16が含まれるようになりました。
  • 新しい_{$CODEALIGN}_ディレクティブ、これはプロシージャまたは関数の開始アドレスを設定します。
  • _{$STRONGLINKTYPES ON}_ディレクティブ
  • 正規表現のサポート。

Delphi 201

  • 拡張されたDelphi RTTI(ランタイムタイプ情報)。
  • 属性
  • as演算子を使用すると、抽出元のオブジェクトにインターフェイス参照をキャストできます。
  • is演算子を使用して、インターフェイス参照が特定のクラスから抽出されたかどうかを確認できます。
  • インターフェイスで通常の安全でないキャストを実行できます:TObject(SomeInterface)
  • new delayedディレクティブは、DLLなどの外部ライブラリは宣言時にロードされず、メソッドの最初の呼び出しまで待機することを示します
  • クラスコンストラクタ/デストラクタ

Delphi 2009

Delphi 2007

  • 私が知っている言語の変更はありません。
    Delphi 2007は非破壊的なリリースであることに注意してください。D2006のDCUはD2007で変更なしで動作します;
  • (2007年の.NET「パーソナリティ」 導入されたジェネリック

Delphi 2006

Delphi 2005

  • _for ... in_ループ、
  • inlineキーワード
  • Usesステートメントのワイルドカードが許可されます
  • 入れ子型
  • ネストされた定数
  • _{$REGION}_/_{$ENDREGION}_ディレクティブ

Delphi 7

  • 3つの追加コンパイラ警告:
    • Unsafe_Type、
    • Unsafe_Code、および
    • Unsafe_Cast。 これらの警告はデフォルトで無効になっていますが、有効にすることができます
  • 新しいコンパイラ指令_{$WARN UNSAFE_CODE ON}_
  • TFormatSettings構造体を使用して、数値、日時値、および通貨をフォーマットおよび解析するルーチンのオーバーロード。

Delphi 6

Delphi 5

新しい言語機能はありませんが、次のとおりです。

Delphi 4

Delphi

  • Wordbool、longbool、byteboolはtrueを1ではなく_-1_として保存します(ブール値は変更されません)
  • コンポーネントはpackagesを使用してインストールする必要があります。
  • アサーション。
  • outパラメーター。
  • Widestring
  • interfaceおよびdispinterfaceキーワードおよびCOM(dispid)サポート。

Delphi 2

  • 32ビットのサポート。
  • Ansistringは、デフォルトの文字列型としてshortstringを置き換えます
  • Currency
  • Variant (OLE Automation)との相互運用のため)。
  • スレッド化サポートおよび ThreadVar キーワード。
  • 4バイトのデータは4バイトで整列されますnew packedキーワードはこの動作をオーバーライドします。
  • TDateTimeは_1899/12/30_で始まり、D1では_0000/00/00_で始まりました
  • 新しいfinalizationキーワード
  • registerおよびstdcall呼び出し規約が追加されました。
  • packedキーワード。
152
Johan

Johan の答えを補完するために、ブログでこのエントリを確認してください List of changes between versions of Delphi (Since Delphi 5) と素晴らしいページ The TIndex これは、delphi 2005以降のほとんどの新機能と各機能に関するリソースをリストしています。

16
RRUZ

Dephi JEDIプロジェクトで使用される jedi.inc ファイルは、一連の機能定義を公開します。プロジェクトがMPL互換である場合、機能検出に使用することさえでき、特定のホイールを再発明する手間を省くことができます。

たとえば、SUPPORTS_FOR_INコンパイラが列挙子をサポートする場合。特定のコンパイラバージョンをチェックするのではなく、その定義をチェックするIFDEFで列挙子コードをラップすることができます。

7
afrazier