Delphi语言功能列表以及引入/弃用它们的版本

时间:2011-12-10 21:31:32

标签: delphi delphi-2007

在开始之前,我想指出的是,我已经通过谷歌进行了这样的事情,并且无法找到一个,而且我已经真实而且真实地进行了搜索。

我要求(对于我正在开发的项目)列出所有Delphi(2007年到最新发布的版本,我不再支持2007年以前的任何版本)“语言功能”,以及它们的版本介绍和(如适用)弃用,改进或删除。

之前我已经在Stack Overflow上注意到类似的问题,尽管其中大部分是以“哪个功能最好”的形式表达的,并且被认为是不合适的。

如果有人知道这样的清单(或有足够的空闲时间来编制一个清单),我将非常感激。

接受的答案将包含指向此类列表的链接或列表本身。

3 个答案:

答案 0 :(得分:149)

请注意,此答案仅列出新的语言功能
新的VCL / FMX功能。

以下是RAD Studio docwiki的链接:

Embarcadero的完整名单:What's New
另见:David I's list


总结:

Delphi 10.3.x,10.4 (还没有出来,这是推测性的)

<强> Delphi 10.3

  • The 64-bit Linux compiler no longer uses ARC,它使用默认的手动托管,与Windows编译器中的相同。这使得从Windows或OSX到Linux的代码更容易移植。
  • 具有自动类型推断的
  • Inline variables
  • 在Linux上启用时支持8位AnsiChar / AnsiString。
  • C ++ Builder和Delphi现在对所有呼叫都使用相同的ABI。

Delphi 10.2 Tokyo

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 XE3

Delphi XE2

Delphi XE

  • 在XE中忽略{$STRINGCHECKS}编译器指令;
  • {$ALIGN}指令的新16字节值: {$ALIGN}指令的可接受值现在包括1,2,4,8和16.
  • new {$CODEALIGN}指令,它设置过程或函数的起始地址。
  • {$STRONGLINKTYPES ON}指令
  • 支持正则表达式。

Delphi 2010

  • 增强的Delphi RTTI(运行时类型信息)。
  • Attributes
  • as运算符可用于将接口引用强制转换回从中提取它的对象。
  • is运算符可用于验证是否从某个类中提取了接口引用。
  • 可以在界面上执行正常的不安全投射:TObject(SomeInterface)
  • new delayed指令表示在声明时不会加载外部库(如DLL),而是等到第一次调用方法
  • Class Constructor/Destructor

Delphi 2009

Delphi 2007

  • 我所知道的语言没有变化;
    请注意,Delphi 2007是一个非破坏版本,D2006的DCU将在D2007中保持不变;
  • (.NET&#39;个性&#39; 2007 introduced generics

Delphi 2006

Delphi 2005

  • for ... in循环,
  • inline关键字
  • 允许使用声明中的通配符
  • 嵌套类型
  • 嵌套常量
  • {$REGION} / {$ENDREGION}指令

Delphi 7

  • 三个额外的编译器警告:
    • Unsafe_Type,
    • Unsafe_Code和
    • Unsafe_Cast。 默认情况下会禁用这些警告,但可以启用
  • new compiler directive {$WARN UNSAFE_CODE ON}
  • 使用TFormatSettings结构格式化和解析数字,日期时间值和货币的例程过载。

Delphi 6

Delphi 5

没有新的语言功能,但是:

Delphi 4

  • Dynamic arrays
  • LongWordInt64; Cardinal是UINT32 (在它是无符号的31位值之前)
  • Real占用8个字节,与double相同(以前为6个字节);
    • 使用新的{$REALCOMPATIBILITY ON}编译器指令覆盖;
    • REAL48替换旧的6字节real;
  • 支持resourcestrings
  • Method overloading
  • Default parameters
  • {$EXTERNALSYM}{$NODEFINE}指令
  • implements keyword属性

Delphi 3

  • Wordbool,longbool和bytebool将true存储为-1而不是1(布尔值不变)
  • 必须使用packages安装组件。
  • 断言。
  • out个参数。
  • Widestring
  • interfacedispinterface关键字以及COM(dispid)支持。

Delphi 2

  • 支持32位;
  • Ansistringshortstring替换为默认字符串类型
  • Currency
  • Variant(用于与OLE自动化互操作)。
  • 线程支持和ThreadVar关键字。
  • 4字节数据是4字节对齐的新packed关键字会覆盖此行为;
  • TDateTime从1899/12/30 下的0000/00/00开始,<{1}}
  • finalization关键字
  • 添加了
  • registerstdcall个调用约定。
  • packed keyword。

答案 1 :(得分:16)

只是为了补充Johan的答案,请在我的博客List of changes between versions of Delphi (Since Delphi 5)上查看此条目以及列出自delphi 2005以来的大部分新功能以及每个新资源的优秀页面The TIndex

答案 2 :(得分:7)

Dephi JEDI项目使用的jedi.inc文件公开了一系列功能定义。如果您的项目与MPL兼容,您甚至可以将其用于特征检测,并省去重新发明特定轮子的麻烦。

例如,如果编译器支持枚举器,则定义SUPPORTS_FOR_IN。可以将枚举器代码包装在IFDEF检查该定义中,而不是检查特定的编译器版本。