Delphi语言function列表和引入/弃用它们的版本

在开始之前,我想指出的是,我真诚地,真诚地通过谷歌search了这样一个事实,并且一直无法find一个。

我要求(对于我正在开发的一个项目)列出所有Delphi(2007年到最新发布的版本,我不再支持任何比2007年更早的版本)“语言function”,以及它们被引入的版本和在适用的情况下)弃用,改进或删除。

在Stack Overflow之前,我已经注意到类似的问题,尽pipe其中大多数是以“哪个特性最好”的formsexpression的,并且被认为是不合适的。

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

接受的答案将包含链接到这样的列表,或列表本身。

请注意,这个答案只列出了新的语言function

以下是RAD Studio docwiki的链接:

  • Delphi和C ++ Builder 10.2东京新增function
  • Delphi和C ++ Builder 10.1柏林的新特性
  • Delphi和C ++ Builder 10 Seattle有什么新东西
  • 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新增function
  • RAD Studio的新function(Delphi for Win32 2007)
  • RAD Studio中的新增function(C ++ Builder 2007)
  • Delphi 2006中的新function
  • Delphi 2005的新特性
  • Delphi 7中的新function
  • Delphi 6的新特性
  • Delphi 5中的新function
  • Delphi 4的新特性
  • Delphi 3中的新function
  • Delphi 2有什么新function
  • delphi1function

Embarcadero的完整列表: 新function
另请参阅: David I的名单


总结:

Delphi 10.3(代号嘉年华)(待定)

  • 支持OSX 64位
  • 可空types

Delphi 10.2东京

  • 支持Linux服务器应用程序(使用LLVM和ARC的Intel 64位)。
  • 只有在强制转换arrays时,才允许使用@运算符将dynamic数组分配给指针。
  • 单位名称更灵活的命名空间parsing

delphi10.1柏林

  • 在所有平台上支持Utf8String和RawByteStringtypes
  • 所有编译器都支持[weak][unsafe][volatile]属性 。
  • 在OSX上扩展的大小现在是16个字节。
  • 类和logging助手不能访问它们扩展的类或logging的私有成员 。
  • 支持Android 6.01。

Delphi 10西雅图

  • 支持Android 5.1.1和iOS 8.4
  • 改进了OSXexception处理

delphiXE8

  • 支持64位iOS;
  • 新的整数types: FixedInt ,所有平台上的FixedUInt 32位整数types;
  • 新的平台相关整数types: LongInt , LongWord (iOS-64上的64位,所有其他平台上的32位);

delphiXE7

  • dynamic数组支持string类操作
  • 并行库添加到RTL
  • 新的编译器内部例程(无证):

    function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;

delphiXE6

delphiXE5

  • Android支持;
    需要使用ArmV6 + Neon或ArmV7进行部署
    引入了条件定义ANDROID
  • 运算符重载类(但仅用于NextGen编译器{Android / iOS})

delphiXE4

  • 以下新条件在XE4中引入/启用:
    AUTOREFCOUNT
    CPUARM
    EXTERNAL_LINKER
    IOS
    下一代
    UNDERSCOREIMPORTNAME
    WEAKREF
    WEAKINSTREF
    WEAKINTREF

    • 重新引入了对iOS的支持。
    • 用于指定外部库的依赖关系的新的dependency指令 (在XE8之前无证)。
    • NextGen编译器支持ARC (包括TObject.DisposeOf )。
      请注意,ARC的大部分基础工作已经在XE3中,但其中大部分已被禁用
    • 在XE4版本之前, $IF语句只能以$IFEND终止 ,而$IFDEF$IFOPT$IFOPT指令只能以$ENDIF终止。

在XE4中,这个改变使得$ ENDIF成为$ IF,$ IFDEF,$ IFNDEF和$ IFOPT的一个可接受的终结符。

delphiXE3

  • logging帮助器的内置types
  • 删除了对iOS的支持。
  • primefaces内在function:
    AtomicExchange()AtomicIncrement()AtomicCmpExchange()AtomicDecrement()
  • 介绍[ref]属性 。

delphiXE2

  • 跨平台支持Mac OSX(32位)和iOS;
  • 支持Win64;
  • 修改后的RTL支持跨平台;
  • Packed Now Forces字节alignmentlogging (Pre XE2它不一定这样做)
  • 八个新的DEFINE已被添加:

    ALIGN_STACK
    CPUX86
    CPUX64
    MACOS(Mac操作系统)
    MACOS32
    PC_MAPPED_EXCEPTIONS
    PIC
    WIN64

  • 您的uses条款现在需要完整的单位范围名称。
  • {$ExcessPrecision on/off}编译器指令 (仅限{$ExcessPrecision on/off} x64)
  • 内置types根据目标平台(32/64位)而有所不同
    • 扩展数据types在Win32上是10个字节,而在Win64上是8(!)个字节

delphiXE

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

delphi2010年

  • 增强的Delphi RTTI(运行时间types信息)。
  • 属性
  • as运算符可用于将接口引用转换回从中提取的对象。
  • is运算符可用于validation接口引用是否从某个类中提取。
  • 正常的不安全的转换可以在一个接口上执行: TObject(SomeInterface)
  • 新的delayed指令指示外部库(如DLL)不会在声明时加载,而是要等到第一次调用方法
  • 类构造器/析构器

delphi2009年

  • UnicodeStringtypesstring现在映射到UnicodeString ;
  • {$HighCharUnicode on|off}编译器指令
  • generics ;
  • function Default(T): T内在函数(未logging)
  • 智能指针 ;
  • 匿名方法 ;
  • 支持嵌套exception和exception跟踪
  • 支持pointermath和一个新的编译器指令: {$PointerMath on|off} ;
  • 四个新的编译器警告:
    • 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;
  • 除了VMT指针, TObject还有一个额外的指向TMonitor隐藏指针;
  • deprecated关键字现在可以具有其他文本

delphi2007年

  • 没有我所知道的语言改变;
    请注意,delphi2007是一个不破的版本,从D2006的DCU将在D2007工作不变,
  • (2007年.NET的“个性” 引入了generics )

delphi2006年

  • 增强logging ;
  • 操作员超载 ;
  • static方法和属性;
  • class级助手 ;
  • FastMM是默认的内存pipe理器;
  • strict私人/受保护的知名度
  • 虚拟方法的final关键字;
  • {$METHODINFO}指令;

Delphi 2005

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

delphi7

  • 三个额外的编译器警告:
    • Unsafe_Type,
    • Unsafe_Code和
    • Unsafe_Cast。 这些警告默认是禁用的,但可以启用
  • 新的编译器指令{$WARN UNSAFE_CODE ON}
  • 重载使用TFormatSettings结构格式化和parsing数字,date时间值和货币的TFormatSettings

delphi6

  • [TCustomVariantType][68] 为自定义变体types提供了运算符重载
  • 新的编译器指令:
    • {$IFDEF MSWINDOWS}
    • {$IFDEF LINUX}
    • {$LIBPREFIX}
    • {$LIBSUFFIX}
    • {$LIBVERSION}
    • {$MESSAGE 'message'}
    • {$SetPEFlags}
  • 支持{$IF}{$ELSE}编译器指令
  • 编译器提示指令: experimentaldeprecatedlibraryplatform (但不包括已弃用的其他文本)
  • Variant不再基于COM,而是更改为CLX兼容,基于COM的变OLEVariant命名为OLEVariant
  • 键入的常量不能分配给(用{$J+}覆盖)
  • 枚举types可以分配一个明确的值(比较C ++);
  • 接口属性
  • 支持调用varargs外部函数(但仅限于cdecl调用约定)
  • 定制变体

delphi5

没有新的语言function,但:

  • 支持添加框架

delphi4

  • dynamic数组
  • LongWordInt64 ; Cardinal是一个UINT32 (之前它是无符号的31位值)
  • Real占用8个字节,与double相同(以前是6个字节);
    • 覆盖新的{$REALCOMPATIBILITY ON}编译器指令;
    • REAL48取代了旧的6字节real ;
  • 支持resourcestrings
  • 方法重载
  • 默认参数
  • {$EXTERNALSYM}{$NODEFINE}指令
  • 为属性implements关键字

Delphi 3

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

Delphi 2

  • 支持32位;
  • AnsistringAnsistringreplace为默认的stringtypes
  • Currency
  • Variant (用于与OLE自动化进行交互)。
  • 线程支持和ThreadVar关键字。
  • 4字节的数据是4字节alignment的新的packed关键字覆盖了这种行为;
  • TDateTime从1899/12/30开始, 在D1 / 0000/00/00开始
  • 新的finalization关键字
  • registerstdcall调用约定添加。
  • packed关键字

只是为了补充Johan的答案在我的博客上检查这个条目List of changes between versions of Delphi (Since Delphi 5)和优秀的页面The TIndex列出了自2005年以来的大多数新function和每个资源。

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

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