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


113

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

すべてのDelphi(2007から最新のリリースバージョンまで、2007より前のバージョンはサポートされなくなりました)のすべてのDelphi(開発中のプロジェクト)のリストが必要です。「言語機能」、およびそれらが導入されたバージョンと(該当する場合)非推奨、改善、または削除。

Stack Overflowでこれと同様の質問を以前に書きましたが、それらのほとんどは「どの機能が最適」の形で表現されており、不適切と見なされて閉じられました。

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

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


Q:では、なぜそのようなリストが必要なのですか?Q:BDS2007とXE2の間のすべてのプラットフォームをサポートする(つまり、BDS2007より新しい機能を使用しない)1つのコードセット(おそらくコンポーネントまたはライブラリ)を作成しようとしていますか?Q:もしそうなら、なぜ2007年にコンパイルして、何が壊れるかを見てみませんか?(PS:私はまだBDS2006を楽しく使っています;))。
paulsm4

8
サイモンはこの質問をチェックしますDelphi言語、RTL、VCLの新機能の各種リスト?、また、私のブログでは、Delphiのバージョン間の変更点の
RRUZ

3
@ paulsm4 1)パブリックライブラリのバージョン間の機能制限を説明できます2)はい(コンポーネントライブラリではない場合もあります)、3)ライブラリの個々の側面ごとに異なるバージョンで常にテストするよりも事前に知っている方が簡単なので。理論的にはD2006は問題なく機能しますが、積極的にサポートするつもりはありません(問題はありません)。
LaKraven

回答:


158

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

以下は、RAD Studio docwikiへのリンクです。

Embarcaderoの全リスト:新着情報
参照:David Iのリスト


要約する:

Delphi 10.3.x、10.4(まだリリースされていません。これは推測です)

Delphi 10.3

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

Delphi 10.2東京

Delphi 10.1ベルリン

デルファイ10シアトル

  • 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 XE3

Delphi XE2

Delphi XE

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

Delphi 2010

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

Delphi 2009

Delphi 2007

  • 私が知っている言語の変更はありません。
    Delphi 2007は互換性のあるリリースであり、D2006のDCUはD2007でも変更なく機能することに注意してください
  • (2007年の.NETの「パーソナリティ」はジェネリックを導入しました

Delphi 2006

Delphi 2005

  • for ... in ループ、
  • inline キーワード
  • ワイルドカードを使用するステートメントを許可
  • ネストされた型
  • ネストされた定数
  • {$REGION}/ {$ENDREGION}ディレクティブ

Delphi 7

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

Delphi 6

Delphi 5

新しい言語機能はありませんが、次の点に注意してください。

Delphi 4

  • 動的配列
  • LongWordそしてInt64; CardinalUINT32 (符号なし31ビット値になる前)
  • Real 8バイトを取り、と同じです double(以前は6バイトでした)とです。
    • 新しい{$REALCOMPATIBILITY ON}コンパイラディレクティブでオーバーライドします。
    • REAL48古い6バイトを置き換えますreal
  • へのサポート resourcestrings
  • メソッドのオーバーロード
  • デフォルトのパラメーター
  • {$EXTERNALSYM}および{$NODEFINE}ディレクティブ
  • implementsプロパティの キーワード

Delphi 3

  • ワードブール、ロングブール、バイトブールtrue-1は、1の代わりにます(ブール値は変更されません)。
  • コンポーネントは、を使用してインストールする必要がありますpackages
  • アサーション。
  • out パラメーター。
  • Widestring
  • interfaceそしてdispinterfaceキーワードとCOM( dispid)をサポート。

Delphi 2

  • 32ビットのサポート。
  • Ansistringshortstringデフォルトの文字列型として置き換えます
  • Currency
  • Variant (OLEオートメーションとの相互運用用)。
  • スレッドのサポートと ThreadVarキーワード。
  • 4バイトのデータは4バイトにアラインされた新しい packedキーワードでこの動作を上書きします。
  • TDateTimeは、1899/12/30 D1の下で開始しました0000/00/00
  • 新しいfinalizationキーワード
  • registerそして、stdcall呼び出し規則が追加されました。
  • packed キーワード。

素晴らしい!古いバージョンのDelphi(XE2以前)に固有のページを表示するDocwikiを取得する方法が見つかりませんでした...なぜかわかりません!これはすばらしいことであり、正解としてマークされています!ありがとう!
LaKraven、2011

@DavidHeffernanこれはベースラインを設定するため、2007年に新しい機能を追加すると便利です...ある意味で、私が作成しているものの一部がおそらく以前のバージョンで機能するかどうかを確実に知ることができますそれをサポートするつもりはありません)
LaKraven


3
Holy Crap DELAYED、それはすごい!アップグレードすると、このリストが表示されないのはなぜですか。
Peter Turner

1
これは正確ではありません。$LIBPREFIX他のディレクティブは少なくともD7以降に存在します(D6は、Kylix関連であるためと思います)
Free Consulting

16

Johanの回答を補足するために、私のブログのこのエントリList of changes between versions of Delphi (Since Delphi 5)と、The TIndexdelphi 2005以降の新機能のほとんどとそれぞれのリソースがリストされている優れたページを確認してください。


以前、別のdelphiサイトdelphi3000が、一部のアンチウイルスにとって危険であるとマークされました。
RRUZ 2011

2
私はTIndexの所有者であり、誤検知であることが確認できました。
LachlanG、2012年

7

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

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


はい、このインクルードは確かに役立ちますが、詳細なリストの完全性に欠けています(この質問のため)提案をありがとう...この質問に対する承認された回答は、jedi.incによって提供される情報の拡張であると考えてください:)
LaKraven

1
@LaKraven:確かに、取得できないものはたくさんありますが、それで十分な場合もあります。また、すでに行われているという利点もあります。:-)個人的には、VCL階層をフラット化し、著作権ヘッダーを取り除き、それらすべてをバージョンコントロールリポジトリに捨てるのも便利だと思います。これにより、特定のRTL / VCL機能がいつ実装されたかを確認できます。
11

@LaKraven、私はjedi.inc少なくとも正確だと思いますが、ヨハンのリストはいくつかの検証が必要です。
無料コンサルティング
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.