德尔福语言功能列表及其引入/不推荐的版本(List of Delphi language features and version in which they were introduced/depr

编程入门 行业动态 更新时间:2024-10-25 10:26:32
德尔福语言功能列表及其引入/不推荐的版本(List of Delphi language features and version in which they were introduced/deprecated)

在我开始之前,我想指出,我已经通过Google诚恳地,真诚地搜索了这样的一件事,并且无法找到它。

我需要(对于我正在开发的一个项目)所有Delphi的列表(2007年到最新发布的版本,我不再支持2007年以前的任何版本)“语言特性”,以及它们被引入的版本(如适用)已弃用,改进或删除。

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

如果有人知道这样的列表(或有足够的空闲时间来编译),我将非常感谢。

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

Before I begin, I would like to point out that I have honestly and genuinely searched repeatedly and exhaustively via Google for such a thing, and been unable to find one.

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.

If anyone knows of such a list (or has enough spare time to compile one), I would be very grateful.

The accepted answer will either contain a link to such a list, or the list itself.

最满意答案

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

以下是RAD Studio docwiki的链接:

Delphi和C ++ Builder 10.2中的新功能东京 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的新功能 德尔福6新功能 Delphi 5的新功能 德尔福4的新功能 Delphi 3的新功能 Delphi 2的新功能 Delphi 1功能

来自Embarcadero的完整列表: 最新消息 另见: 大卫我的名单


总结:

Delphi 10.3(代号嘉年华)(待确认)

支持OSX 64位 可空的类型

德尔福10.2东京

支持Linux服务器应用程序(Intel 64位使用LLVM和ARC)。 只有使用@操作符将动态数组分配给指针时,才允许在强制转换数组时使用。 更灵活的名称空间解析单位名称

德尔福10.1柏林

在所有平台上支持Utf8String和RawByteString类型 所有编译器都支持[weak] , [unsafe]和[volatile]属性 。 在OSX上扩展的大小现在是16字节。 类和记录助手无法访问他们扩展的类或其记录的私有成员 。 支持Android,最高6.01。

德尔福10西雅图

支持Android 5.1.1和iOS 8.4 改进的OSX异常处理

德尔福XE8

支持64位iOS; 新的整数类型: FixedInt , FixedUInt所有平台上的32位整数类型; 新的依赖平台的整数类型: LongInt , LongWord (iOS-64上的64位,所有其他平台上的32位);

德尔福XE7

动态数组支持的类似字符串的操作 并行库添加到RTL

新编译器内部例程(未记录):

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

德尔福XE6

德尔福XE5

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

德尔福XE4

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

重新引入了对iOS的支持。 在NextGen编译器中支持ARC (包括TObject.DisposeOf )。 请注意,ARC的许多基础已经在XE3中,但其中大部分已被禁用 在XE4发布之前, $IF声明只能以$IFEND终止 ,而$IFDEF , $IFOPT , $IFOPT指令只能以$ENDIF终止。

在XE4,这改变了,$ ENDIF成为$ IF,$ IFDEF,$ IFNDEF和$ IFOPT的接受终止符。

德尔福XE3

为内置类型记录助手 删除对iOS的支持。 原子本征函数: AtomicExchange() , AtomicIncrement() , AtomicCmpExchange() , AtomicDecrement() 引入[ref]属性 。

德尔福XE2

Mac OSX(32位)和iOS的跨平台支持; 支持Win64; 修改RTL支持跨平台; 现在Packed强制字节对齐记录 (Pre XE2它不一定这样做)

增加了八个新的DEFINE:

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

您的uses子句现在需要完整的单位范围名称。 {$ExcessPrecision on/off}编译器指令 (仅限x64) 内置类型因目标平台(32/64位)而异, 扩展数据类型在Win32上为10字节,但Win64上为8(!)字节

德尔福XE

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

德尔福2010

增强的Delphi RTTI(运行时类型信息)。 属性 as操作符可用于将接口引用转换回提取对象。 可以使用is操作符来验证是否从某个类中提取了接口引用。 可以在接口上执行正常不安全的转换: TObject(SomeInterface) 。 新的delayed指令表示外部库(例如DLL)不在声明时加载,而是等到第一次调用该方法 类构造函数/析构函数

德尔福2009

内部类型string现在映射到UnicodeString ; {$HighCharUnicode on|off}编译器指令 泛型 function Default(T): T内在函数(Undocumented) 智能指针 匿名方法 ; 支持嵌套异常和异常跟踪 ; 支持指针和新的编译器指令: {$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净值; 除了它的VMT指针之外, TObject还有一个额外隐藏的指向TMonitor指针; deprecated关键字现在可以包含其他文字

德尔福2007

没有我所知道的语言变化; 请注意,Delphi 2007是一款不间断版本,D2006的DCU将在D2007中保持不变 ; (2007年的.NET“个性” 引入泛型 )

德尔福2006

增强记录 ; 操作员重载 ; static方法和属性; 班级助理 FastMM是默认的内存管理器; strict私人/受保护的关键字 ; 虚拟方法的final关键字; {$METHODINFO}指令;

德尔福2005

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

德尔福7

另外三个编译器警告: Unsafe_Type, Unsafe_Code和 Unsafe_Cast。 默认情况下禁用这些警告,但可以启用 新的编译器指令{$WARN UNSAFE_CODE ON} 使用TFormatSettings结构重新格式化和解析数字,日期时间值和货币的TFormatSettings 。

德尔福6

[TCustomVariantType][68]提供自定义变体类型的操作符重载 新的编译器指令: {$IFDEF MSWINDOWS} {$IFDEF LINUX} {$LIBPREFIX} {$LIBSUFFIX} {$LIBVERSION} {$MESSAGE 'message'} {$SetPEFlags} 支持{$IF}{$ELSE}编译器指令 编译器提示指令: experimental , deprecated , library , platform (但不包含已弃用的其他文字) 变体不再是基于COM,而是变成CLX兼容的,基于COM的变种重命名为OLEVariant 类型常量不能分配给(覆盖{$J+} ) 枚举类型可以分配一个显式值(cf C ++); 接口属性 支持调用varargs外部函数(但仅用于cdecl调用约定) 自定义变体

德尔福5

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

支持框架

德尔福4

动态数组 LongWord和Int64 ; Cardinal是一个UINT32 (之前是无符号的31位值) Real需要8个字节,与double相同(以前是6个字节); 使用新的{$REALCOMPATIBILITY ON}编译器指令覆盖; REAL48替换旧的6字节real ; 支持resourcestrings 方法重载 默认参数 {$EXTERNALSYM}和{$NODEFINE}指令 implements属性的关键字

德尔福3

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

德尔福2

支持32位; Ansistring将Ansistring替换为默认字符串类型 Currency Variant (用于与OLE自动化互操作)。 线程支持和ThreadVar关键字。 4字节数据是4字节对齐新的packed关键字覆盖此行为; TDateTime从1899/12/30开始, D1开始于0000/00/00 新的finalization关键字 register和stdcall调用约定添加。 packed关键字

Note that this answer only lists new language features not new VCL/FMX features.

Here are the links to the RAD Studio docwiki:

What's new in Rad Studio 10.3 Rio What's new in Delphi and C++Builder 10.2 Tokyo What's new in Delphi and C++Builder 10.1 Berlin What's new in Delphi and C++Builder 10 Seattle What's new in Delphi and C++Builder XE8 What's New in Delphi and C++Builder XE7 What's New in Delphi and C++Builder XE6 What's New in Delphi and C++Builder XE5 What's New in Delphi and C++Builder XE4 What's New in Delphi and C++Builder XE3 What's New in Delphi and C++Builder XE2 What's New in Delphi and C++Builder XE What's New in Delphi and C++Builder 2010 What's New in Delphi and C++Builder 2009 What's New in RAD Studio (Delphi for Win32 2007) What's New in RAD Studio (C++Builder 2007) What’s New in Delphi 2006 What’s New in Delphi 2005 What’s New in Delphi 7 What’s New in Delphi 6 What’s New in Delphi 5 What's New in Delphi 4 What's New in Delphi 3 What's New in Delphi 2 Delphi 1 Features

The full list from Embarcadero: What's New See also: David I's list


To summarize:

Delphi 10.3.x, 10.4 (not yet out, this is speculative)

Custom managed records Nullable types Support for macOS 64-bit Support for Android 64-bit

Delphi 10.3

The 64-bit Linux compiler no longer uses ARC, it instead uses the default manual managed, which is the same as in the Windows compiler. This makes porting code from Windows or OSX to linux much easier. Inline variables with automatic type inference 8 bit AnsiChar/AnsiString support in enable on Linux. C++Builder and Delphi now use the same ABI for all calls.

Delphi 10.2 Tokyo

Support for Linux server apps (Intel 64-bit using LLVM and ARC). Assigning a dynamic arrays to a pointer using the @ operator is only allowed when hard-casting the array. More flexible namespace resolution of unit names

Delphi 10.1 Berlin

Native support for Utf8String and RawByteString type on all platforms The [weak], [unsafe] and [volatile] attributes are supported on all compilers. The size of extended on OSX is now 16 bytes. class and record helpers cannot access private members of the classes or records they extend. Support for Android up to 6.01.

Delphi 10 Seattle

Support for Android 5.1.1 and iOS 8.4 Improved OSX exception handling

Delphi XE8

Support for 64-bit iOS; New integer types: FixedInt, FixedUInt 32-bit integer types on all platforms; New platform dependent integer types: LongInt, LongWord (64-bits on iOS-64, 32-bits on all other platforms);

Delphi XE7

String-Like Operations Supported on Dynamic Arrays Parallel Library added to the RTL

New compiler intrinsic routines (undocumented):

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

Delphi XE6

Delphi XE5

Android Support; needs device with ArmV6 + Neon or ArmV7 for deployment introduces conditional define ANDROID Operator overloading for classes (but only for the NextGen compiler {Android/iOS})

Delphi XE4

The following new conditionals are introduced/enabled in XE4: AUTOREFCOUNT CPUARM EXTERNAL_LINKER IOS NEXTGEN UNDERSCOREIMPORTNAME WEAKREF WEAKINSTREF WEAKINTREF

Reintroduced support for iOS. New dependency directive for specifying the dependencies of an external library (undocumented until XE8). ARC support in NextGen compilers (including TObject.DisposeOf). Note that much of the groundwork for ARC was already in XE3, but much of it was disabled Before the XE4 release, $IF statements could only be terminated with $IFEND, and the $IFDEF, $IFNDEF, $IFOPT directives could only be terminated with $ENDIF.

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

Delphi XE3

Record helpers for built-in types Removed support for iOS. Atomic intrinsic functions: AtomicExchange(), AtomicIncrement(), AtomicCmpExchange(), AtomicDecrement() Introduction of the [ref] attribute.

Delphi XE2

Cross platform support for Mac OSX (32-bit) and iOS; Support for Win64; Modified RTL to support cross platform; Packed Now Forces Byte Alignment of Records (Pre XE2 it did not necessarily do this)

Eight new DEFINEs have been added:

ALIGN_STACK CPUX86 CPUX64 MACOS (Mac operating system) MACOS32 PC_MAPPED_EXCEPTIONS PIC WIN64

Full unit scope names are now required in your uses clause. {$ExcessPrecision on/off} compiler directive (x64 only) The build-in types differ depending on the target platform (32/64-bit) Extended Data Type Is 10 bytes on Win32, but 8 (!) bytes on Win64

Delphi XE

The {$STRINGCHECKS} compiler directive is ignored in XE; New 16-byte value for the {$ALIGN} directive: The acceptable values for the {$ALIGN} directive now include 1, 2, 4, 8, and 16. new {$CODEALIGN} directive, this sets the starting address for a procedure or function. The {$STRONGLINKTYPES ON} directive Support for regular expressions.

Delphi 2010

Enhanced Delphi RTTI (Run Time Type Information). Attributes The as operator can be used to cast an interface reference back to the object from which it was extracted. The is operator can be used to verify whether an interface reference was extracted from a certain class. Normal unsafe casting can be performed on an interface: 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 Class Constructor/Destructor

Delphi 2009

Intrinsic type string now maps to UnicodeString; {$HighCharUnicode on|off} compiler directive Generics; function Default(T): T intrinsic function (Undocumented) Smart pointers; Anonymous methods; Support for nested exceptions and exception tracing; support for pointermath and a new compiler directive: {$PointerMath on|off}; Four new compiler warnings: 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'; The Exit function can take a parameter specifying a result; resourcestrings as Widestrings; TObject has a extra hidden pointer to TMonitor in addition to its VMT pointer; the deprecated keyword can now have additional text

Delphi 2007

No language changes that I know of; Note that Delphi 2007 is a non-breaking release, DCU's from D2006 will work unchanged in D2007; (The .NET 'personality' of 2007 introduced generics)

Delphi 2006

Enhanced records; operator overloading; static methods and properties; class helpers; FastMM is the default memory manager; strict private/protected visibility keyword; final keyword for virtual methods; {$METHODINFO} directive;

Delphi 2005

for ... in loops, inline keyword Wildcard in uses statement allowed nested types nested constants {$REGION}/{$ENDREGION} directives

Delphi 7

three additional compiler warnings: Unsafe_Type, Unsafe_Code, and Unsafe_Cast. These warnings are disabled by default, but can be enabled new compiler directive {$WARN UNSAFE_CODE ON} Overloads of routines that format and parse numbers, date-time values, and currency using a TFormatSettings structure.

Delphi 6

[TCustomVariantType][68] provides operator overloading for custom variant types New compiler directives: {$IFDEF MSWINDOWS} {$IFDEF LINUX} {$LIBPREFIX} {$LIBSUFFIX} {$LIBVERSION} {$MESSAGE 'message'} {$SetPEFlags} Support for {$IF}{$ELSE} compiler directives Compiler hinting directives: experimental, deprecated, library, platform (but without additional text for deprecated) Variant is no longer based on COM but changed to be CLX compatible, COM based variant renamed to OLEVariant Typed constants cannot be assigned to (Override with {$J+}) Enumerated types can be assigned an explicit value (cf C++); Interface properties Support for calling varargs external functions (but only for the cdecl calling convention) custom variants

Delphi 5

No new language features, but:

Support added for Frames

Delphi 4

Dynamic arrays LongWord and Int64; Cardinal is an UINT32 (before it was unsigned 31-bit value) Real takes 8 bytes and is the same as double (previously it was 6 bytes); Override with the new {$REALCOMPATIBILITY ON} compiler directive; REAL48 replaces the old 6-byte real; Support for resourcestrings Method overloading Default parameters {$EXTERNALSYM} and {$NODEFINE} directives implements keyword for properties

Delphi 3

Wordbool, longbool and bytebool store true as -1 instead of 1 (Boolean is unchanged) Components must be installed using packages. Assertions. out parameters. Widestring interface and dispinterface keyword and COM (dispid) support.

Delphi 2

Support for 32-bit; Ansistring replaces shortstring as the default string type Currency Variant (for interop with OLE automation). Threading support and ThreadVar keyword. 4 byte data is 4 byte aligned new packed keyword overrides this behavior; TDateTime starts at 1899/12/30 under D1 it started at 0000/00/00 new finalization keyword register and stdcall calling conventions added. packed keyword.

更多推荐

本文发布于:2023-04-27 23:43:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1329094.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   版本   功能   德尔福   列表

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!