Delphi 语言特性及其引入/废弃版本的列表

在我开始之前,我想指出的是,我已经诚实和真诚地反复搜索和彻底地通过谷歌这样的东西,但无法找到一个。

I require (for a project I'm developing) a list of all Delphi (2007 to the very latest released version, I no longer support any version older than 2007) "Language Features", and the versions in which they were introduced and (where applicable) deprecated, improved or removed.

I have noted similar questions to this on Stack Overflow before, though most of those were phrased in the form of "which feature is best", and closed as deemed unsuitable.

如果有人知道这样一个列表(或者有足够的空闲时间编写一个) ,我将非常感激。

接受的答案要么包含到这样一个列表的链接,要么包含到该列表本身的链接。

32772 次浏览

注意,这个答案只列出了新的 语言特性
没有 新的 VCL/FMX 功能。

以下是到 RAD Studio docwiki 的链接:

来自 Embarcadero 的完整名单: 最新消息
参见: 《大卫一世的清单》
另见: < a href = “ https://github.com/idea/DelphiKB/wiki/Delphi-Master-Release-List”rel = “ nofollow noReferrer”> Delphi Master Release List wiki


总结一下:

Delphi 11

  • 二进制文字和数字分隔符
  • 对 AVX 指令的内联汇编支持(AVX-512)
  • 新的记录助手: TDateTimeHelperTCurrencyHelper
  • 64位目标平台

Delphi 10.4

  • 所有平台上的统一内存管理-完整的 ARC 编译器已被删除,所有编译器现在使用手动(经典)对象内存管理
  • 自定义管理记录
  • 对64位 macOS 的支持
  • 对64位 Android 的支持

Delphi 10.3

  • 位 Linux 编译器不再使用 ARC ,而是使用默认的托管手册,这与 Windows 编译器相同。这使得将代码从 Windows 或 OSX 移植到 Linux 变得更加容易。
  • Inline variables with automatic type inference
  • 在 Linux 上启用8位 AnsiChar/AnsiString 支持。
  • C++Builder and Delphi now use the same ABI for all calls.

德尔福10.2东京

德尔菲10.1柏林

Delphi 10西雅图

  • Support for Android 5.1.1 and iOS 8.4
  • 改进的 OSX 异常处理

Delphi XE8

  • 支持64位 iOS;
  • 新整数类型: 所有平台上的 FixedIntFixedUInt32位整数类型;
  • 新的平台相关整数类型: LongInt长话(iOS-64上的64位,所有其他平台上的32位) ;

德尔福 XE7

德尔福 XE6

德尔菲 XE5

德尔菲 XE4

At XE4, this changed so that $ENDIF became an accepted terminator for $IF, $IFDEF, $IFNDEF, and $IFOPT.

Delphi XE3

德尔菲 XE2

Delphi XE

  • 在 XE 中忽略 {$STRINGCHECKS}编译器指令;
  • {$ALIGN}指令的新16字节值: {$ALIGN}指令的可接受值现在包括1、2、4、8和16。
  • 新的 {$CODEALIGN}指令,这将设置过程或函数的起始地址。
  • The {$STRONGLINKTYPES ON} directive
  • Support for regular expressions.

德尔菲2010

  • 增强的 Delphi RTTI (运行时类型信息)。
  • 属性
  • as操作符可用于将接口引用强制转换回从中提取接口引用的对象。
  • is运算符可用于验证接口引用是否从某个类中提取。
  • 正常的不安全铸造可以在接口 TObject(SomeInterface)上执行。
  • new delayed directive indicates that an external library such as a DLL is not to be loaded at declaration time but is to wait until the first call to the method
  • 类构造函数/析构函数

德尔菲2009

Delphi 2007

  • 据我所知,语言没有变化;
    注意,Delphi 2007是一个非中断版本,DCU 从 D2006将工作在 D2007 不变;
  • (2007引入了仿制药的.NET“个性”)

德尔菲2006

德尔菲2005

  • for ... in loops,
  • inline关键字
  • 允许使用通配符语句
  • 嵌套类型
  • 嵌套常量
  • {$REGION}/{$ENDREGION}指令
  • Class helpers (在 Delphi 8中为. net 添加) ;

Delphi 7

  • 另外三个编译器警告:
  • 不安全 _ 类型,
  • 不安全 _ 代码,和
  • Unsafe _ Cast. These warnings are disabled by default, but can be enabled
  • 新编译器指令 {$WARN UNSAFE_CODE ON}
  • 使用 TFormatSettings结构格式化和解析数字、日期时间值和货币的例程的重载。

德尔菲6号

德尔菲5号

没有新的语言特征,但是:

Delphi 4

  • 动态数组
  • LongWordInt64; Cardinal是一个 UINT32 (在它是无符号的31位值之前)
  • Real占用8个字节,与 double相同(以前是6个字节) ;
    • 重写新的 {$REALCOMPATIBILITY ON}编译器指令;
    • REAL48 replaces the old 6-byte real;
  • resourcestrings的支持
  • 方法重载
  • 默认参数
  • {$EXTERNALSYM}{$NODEFINE}指令
  • 属性的 implements关键字

Delphi 3

  • Wordbool,longbool 和 bytebool 将 true存储为 -1而不是1(布尔值保持不变)
  • Components must be installed using packages.
  • 断言。
  • out参数。
  • Widestring
  • 支持 interfacedispinterface关键字和 COM (dispid)。

Delphi 2

  • Support for 32-bit;
  • Ansistring取代 shortstring作为默认字符串类型
  • Currency
  • Variant (用于与 OLE 自动化的互操作)。
  • 线程支持和 ThreadVar关键字。
  • 4字节数据是4字节对齐的新 packed关键字覆盖此行为;
  • TDateTime 从 1899/12/30 在 D1下它从 0000/00/00开始开始
  • new finalization keyword
  • 增加了 registerstdcall调用约定。
  • packed关键字。

为了补充 约翰的答案,请查看我的博客 List of changes between versions of Delphi (Since Delphi 5)和优秀的页面 The TIndex的这个条目,其中列出了自德尔福2005年以来的大多数新功能和每一个的资源。

Dephi JEDI 项目使用的 Jedi 公司文件公开了一系列特性定义。如果你的项目是 MPL 兼容的,你甚至可以把它用在特征提取上,省去重新发明那个轮子的麻烦。

For example, it defines SUPPORTS_FOR_IN if the compiler supports enumerators. One could wrap your enumerator code in an IFDEF checking for that define rather than checking for a particular compiler version.