[解決済み] Delphiの言語機能一覧と導入・廃止されたバージョン
質問
始める前に、私は正直に、純粋に、Google でそのようなものを繰り返し徹底的に探しましたが、見つけることができなかったことを指摘しておきたいと思います。
私は (開発中のプロジェクトのために) すべての Delphi (2007 から最新のリリース バージョンまで。2007 より古いバージョンはもうサポートしない) の "Language Features" およびそれらが導入されたバージョンと (該当する場合) 非推奨、改良または削除のリストを要求します。
私は以前 Stack Overflow でこれと同様の質問を書きましたが、それらのほとんどは "どの機能がベストか、という形で表現され、適切でないと判断され、閉じられました。
もし誰かがそのようなリストを知っていれば (またはそれをコンパイルするのに十分な空き時間があれば)、私は非常に感謝します。
承認された回答は、そのようなリストへのリンクか、リストそのものを含んでいます。
どのように解決するのですか?
この回答では、新しい
言語
機能
ではない
VCL/FMXの新機能を紹介します。
RAD Studio docwiki へのリンクはこちらです。
- Rad Studio 10.4 シドニーでの新機能
- Rad Studio 10.3 リオの新機能
- Delphi および C++Builder 10.2 Tokyo の新機能
- Delphi および C++Builder 10.1 ベルリンでの新機能
- Delphi および C++Builder 10 の新機能 シアトル
- Delphi および C++Builder XE8 の新機能
- Delphi および C++Builder XE7 での新機能
- Delphi および C++Builder XE6 での新機能
- Delphi および C++Builder XE5 での新機能
- Delphi および C++Builder XE4 の新機能
- Delphi および C++Builder XE3 の新機能
- Delphi および C++Builder XE2 の新機能
- Delphi および C++Builder XE での新機能
- Delphi および C++Builder 2010 の新機能
- Delphi および C++Builder 2009 の新機能
- RAD Studio (Delphi for Win32 2007) の最新情報
- RAD Studio (C++Builder 2007) の新機能
- Delphi 2006 の新機能
- Delphi 2005 の新機能
- Delphi 7 の新機能
- Delphi 6 の新機能
- Delphi 5 の新機能
- Delphi 4 の新機能
- Delphi 3 の新機能
- Delphi 2の新機能
- Delphi 1 の特徴
エンバカデロからの全リストです。
新着情報
こちらもご覧ください。
David I氏のリスト
要約すると
- すべてのプラットフォームで統一されたメモリ管理 - フル ARC コンパイラは削除され、すべてのコンパイラはオブジェクトに対して手動 (クラシック) のメモリ管理を使用するようになりました。
- カスタム管理レコード
- macOS 64 ビット対応
- Android 64 ビット対応
- 64 ビット Linux コンパイラは、もはや ARC を使用しません。 代わりに、Windows コンパイラーと同じデフォルトの手動マネージドを使用します。これにより、Windows や OSX から Linux へのコードの移植がより簡単になります。
- インライン変数 自動型推論付き
- 8 ビット AnsiChar/AnsiString のサポートが Linux で有効になりました。
- C++Builder と Delphi は、すべての呼び出しに同じ ABI を使用するようになりました。
- Linux サーバーアプリのサポート (LLVM および ARC を使用した Intel 64 ビット)。
-
を使用した動的配列のポインタへの割り当て。
@
演算子を用いて動的配列をポインタに割り当てることは、 配列をハードキャストする場合にのみ許可されます。 - ユニット名のより柔軟な名前空間解決
- のネイティブ サポート Utf8String と RawByteString タイプはすべてのプラットフォームで
-
は
[weak]
,[unsafe]
と[volatile]
属性 はすべてのコンパイラでサポートされています。 - OSX での拡張のサイズは 16 バイトになりました。
- クラスおよびレコードヘルパーは、拡張するクラスまたはレコードのプライベートメンバにアクセスすることができません。 .
- Android 6.01 までをサポートしました。
- Android 5.1.1 および iOS 8.4 のサポート
- OSX の例外処理の改善
- 64 ビット iOS をサポートします。
- 新しい整数型。 FixedInt , 固定UInt すべてのプラットフォームでの 32 ビット整数型。
- プラットフォーム依存の新しい整数型。 LongInt , 長い単語 (iOS-64では64ビット、その他のプラットフォームでは32ビット)。
-
function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;
-
Android をサポートします。
ArmV6 + NeonまたはArmV7を搭載したデバイスがデプロイメントに必要です。
紹介 条件付きでANDROIDを定義 - クラスの演算子オーバーロード(ただしNextGenコンパイラ{Android/iOS}のみ)
-
XE4 では、次の新しい条件文が導入/有効化されました。
AUTOREFCOUNT
CPUARM
外部リンカー
IOS
ネクストジェン
アンダースコア・インポート名
ウィークレフ
WEAKINSTREF
WEAKINTREF -
iOS のサポートを再導入しました。
-
新しい
dependency
ディレクティブ 外部ライブラリの依存関係を指定するためのものです (XE8 までは文書化されていませんでした)。 -
ARC対応 NextGen コンパイラ (以下を含む) で TObject.DisposeOf ).
ARC の下地はすでに XE3 にありましたが、その多くが無効化されていることに注意してください。 -
XE4 リリース以前。
$IF
文の終端は$IFEND
で終わるしかなく、また$IFDEF
,$IFNDEF
,$IFOPT
ディレクティブの終端は$ENDIF
.
XE4 では、$ENDIF が $IF, $IFDEF, $IFNDEF, および $IFOPT の終端として認められるように変更されました。
- 組み込み型のためのレコードヘルパー
- iOS のサポートを削除しました。
-
アトミックな組込み関数。
AtomicExchange()
,AtomicIncrement()
,AtomicCmpExchange()
,AtomicDecrement()
- の紹介です。 [ref] 属性の導入 .
-
Mac OSX (32 ビット) と iOS のクロスプラットフォーム対応。
-
Win64 をサポートします。
-
クロスプラットフォームに対応するためにRTLを変更しました。
-
Packed
レコードのバイトアライメントを強制するようになりました (XE2以前は必ずしもそうではありませんでした) -
8 つの新しい DEFINE が追加されました。
ALIGN_STACK
CPUX86
CPUX64
MACOS (Macオペレーティング・システム)
MACOS32
pc_mapped_exceptions
PIC
WIN64 -
ビルドインタイプはターゲットプラットフォームによって異なります(32/64ビット)
- 拡張データ型 Win32 では 10 バイトですが、Win64 では 8 (!) バイトです。
-
は
{$STRINGCHECKS}
コンパイラディレクティブは XE では無視されます。 -
新しい 16 バイトの値
{$ALIGN}
ディレクティブのための新しい 16 バイトの値です。 ディレクティブに使用できる値は{$ALIGN}
ディレクティブで使用可能な値は 1, 2, 4, 8, 16 となりました。 -
新しい
{$CODEALIGN}
ディレクティブで、プロシージャや関数の開始アドレスを設定します。 -
は
{$STRONGLINKTYPES ON}
ディレクティブ - 正規表現のサポート。
- Delphi RTTI (ランタイム タイプ情報) を強化しました。
- 属性
-
は
as
演算子を使うと、インターフェース参照を抽出したオブジェクトにキャストして戻すことができます。 -
は
is
演算子は、インターフェイスの参照が特定のクラスから抽出されたかどうかを確認するために使用することができます。 -
通常の安全でないキャストをインターフェイス上で実行することができます。
TObject(SomeInterface)
. -
新しい
delayed
ディレクティブは、DLL などの外部ライブラリが宣言時にロードされず、メソッドの最初の呼び出しまで待機することを示します。 - クラス・コンストラクタ/デストラクタ
-
本質的なタイプ
string
にマップされます。UnicodeString
; -
{$HighCharUnicode on|off}
コンパイラディレクティブ - ジェネリックス ;
-
function Default(T): T
組込み関数 (未定義) - スマートポインタ ;
- 匿名メソッド ;
- ネストされた例外のサポートと例外トレース ;
-
pointermath のサポートと新しいコンパイラディレクティブ。
{$PointerMath on|off}
; -
4 つの新しいコンパイラの警告。
-
W1057 Implicit string cast from '%s' to '%s'
, -
W1058 Implicit string cast with potential data loss from '%s' to '%s'
, -
W1059 Explicit string cast from '%s' to '%s'
, -
W1060 Explicit string cast with potential data loss from '%s' to '%s'
;
-
-
は
Exit
関数は結果を指定するパラメータを取ることができます。 -
resourcestrings
をWidestringsとして使用することができます。 -
TObject
には への余分な隠しポインタがあります。TMonitor
へのポインタを追加しました。 -
は
deprecated
キーワードが追加テキストを持つことができるようになりました。
-
私が知っている限りでは、言語の変更はありません。
Delphi 2007 はノン・ブレークリリースであり、D2006 からの DCU は D2007 で変更なく動作することに留意してください。 ; - (2007年の.NETの「個性」) はジェネリックを導入した )
- 強化されたレコード ;
- 演算子のオーバーロード ;
-
static
メソッドとプロパティがあります。 - クラスヘルパー ;
- FastMM はデフォルトのメモリーマネージャーです。
-
strict
非公開/保護された可視性キーワード ; -
final
仮想メソッドのキーワード。 -
{$METHODINFO}
ディレクティブを使用します。
-
for ... in
ループを使用します。 -
inline
キーワード - uses文のワイルドカードが使用可能
- ネストされた型
- ネストされた定数
-
{$REGION}
/{$ENDREGION}
ディレクティブ
- 3 つの追加のコンパイラ警告。
- Unsafe_Type。
- Unsafe_Code、および
- Unsafe_Cast です。 これらの警告はデフォルトでは無効になっていますが、有効にすることができます。
-
新しいコンパイラディレクティブ
{$WARN UNSAFE_CODE ON}
-
数値、日時値、通貨をフォーマットしパースするルーチンのオーバーロード。
TFormatSettings
構造を使用した数値、日付時刻値、通貨のフォーマットとパースルーチンのオーバーロード。
-
[TCustomVariantType][68]
提供する 演算子のオーバーロードを提供します。 -
新しいコンパイラディレクティブ。
-
{$IFDEF MSWINDOWS}
-
{$IFDEF LINUX}
-
{$LIBPREFIX}
-
{$LIBSUFFIX}
-
{$LIBVERSION}
-
{$MESSAGE 'message'}
-
{$SetPEFlags}
-
-
のサポート
{$IF}{$ELSE}
コンパイラディレクティブ -
コンパイラのヒントとなるディレクティブ。
experimental
,deprecated
,library
,platform
(ただし、非推奨のための追加テキストなし) -
バリアントはもはや COM に基づいていませんが、CLX と互換性があるように変更され、COM に基づいていたバリアントは
OLEVariant
-
型付き定数は
(で上書き
{$J+}
) - 列挙型は明示的な値を割り当てることができます (C++ を参照)。
- インターフェイスのプロパティ
-
呼び出しのサポート
varargs
外部関数の呼び出しに対応(ただしcdecl
呼び出し規約) - カスタムバリアント
新しい言語機能はありませんが
- 動的な配列
-
LongWord
そしてInt64
;Cardinal
はUINT32 (以前は符号なし31ビット値) -
Real
は 8 バイトでdouble
(と同じになります(以前は6バイトでした)。-
をオーバーライドして、新しい
{$REALCOMPATIBILITY ON}
コンパイラディレクティブで上書きします。 -
REAL48
は、古い6バイトのreal
;
-
をオーバーライドして、新しい
-
のサポート
resourcestrings
- メソッドのオーバーロード
- デフォルトのパラメータ
-
{$EXTERNALSYM}
そして{$NODEFINE}
ディレクティブ -
implements
キーワード プロパティ用
-
ワードブール、ロングブール、バイトブールストア
true
として-1
の代わりに 1 を指定します(ブール値は変更されません)。 -
コンポーネントのインストールは
packages
. - アサーションです。
-
out
パラメータを使用します。 -
Widestring
-
interface
そしてdispinterface
キーワードと COM (dispid
) をサポートします。
- 32 ビットをサポートします。
-
Ansistring
リプレースshortstring
をデフォルトの文字列型として使用します。 -
Currency
-
Variant
(OLEオートメーションとの相互運用のため)。 -
スレッドのサポートと
ThreadVar
キーワードをサポートします。 -
4バイトのデータは4バイトアラインの新
packed
キーワードはこの動作をオーバーライドします。 -
TDateTimeの開始位置は
1899/12/30
で始まり、D1 では0000/00/00
-
新しい
finalization
キーワード -
register
そしてstdcall
の呼び出し規約が追加されました。 -
packed
キーワードを追加しました。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン