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年
-
UnicodeString
typesstring
现在映射到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}
编译器指令 - 编译器提示指令:
experimental
,deprecated
,library
,platform
(但不包括已弃用的其他文本) - Variant不再基于COM,而是更改为CLX兼容,基于COM的变
OLEVariant
命名为OLEVariant
- 键入的常量不能分配给(用
{$J+}
覆盖) - 枚举types可以分配一个明确的值(比较C ++);
- 接口属性
- 支持调用
varargs
外部函数(但仅限于cdecl
调用约定) - 定制变体
delphi5
没有新的语言function,但:
- 支持添加框架
delphi4
- dynamic数组
-
LongWord
和Int64
;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
-
interface
和dispinterface
关键字和COM(dispid
)支持。
Delphi 2
- 支持32位;
-
Ansistring
将Ansistring
replace为默认的stringtypes -
Currency
-
Variant
(用于与OLE自动化进行交互)。 - 线程支持和
ThreadVar
关键字。 - 4字节的数据是4字节alignment的新的
packed
关键字覆盖了这种行为; - TDateTime从
1899/12/30
开始, 在D1 /0000/00/00
开始 - 新的
finalization
关键字 -
register
和stdcall
调用约定添加。 -
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
检查中,而不是检查特定的编译器版本。