Feature | Version |
---|---|
& operator for treating keywords as identifiers | Delphi 2006 |
{$ALIGN} compiler directive can take additional parameter 16 to set 16 byte alignment | Delphi XE |
{$CODEALIGN} compiler directive | Delphi XE |
{$EXCESSPRECISION} compiler directive for 64 bit compilers only | Delphi XE2 |
{$EXTERNALSYM} compiler directive | Delphi 4 |
{$HIGHCHARUNICODE} compiler directive | Delphi 2009 |
{$IF} & {$IFEND} compiler directives | Delphi 6 |
{$IFEND} directive no longer required to close {$IF} statements: {$ENDIF} can now be used instead. | Delphi XE4 |
{$IFOPT} compiler directive supports long directives: e.g. {$IFOPT SCOPEDENUMS ON} | Delphi 13 |
{$LEGACYIFEND} compiler directive | Delphi XE5 |
{$LIBPREFIX} , {$LIBSUFFIX} & {$LIBVERSION} compiler directives | Delphi 6 |
{$MESSAGE} compiler directive | Delphi 6 |
{$METHODINFO} compiler directive | Delphi 2006 |
{$POINTERMATH} compiler directive | Delphi 2009 |
{$PUSHOPT} & {$POPOPT} compiler directives | Delphi 13 |
{$REGION} & {$ENDREGION} compiler directives | Delphi XE |
{$STRONGLINKTYPES} compiler directive | Delphi 4 |
{$TEXTBLOCK} compiler directive to determine how line breaks are treated in multiline strings. | Delphi 12 |
{$WARN} compiler directive | Delphi 7 |
{$WRITEABLECONST} compiler directive default value changes from ON to OFF . | Delphi 6 |
[ref] attribute | Delphi XE3 |
0..9 | |
32 bit compiler & support for Windows 95 | Delphi 2 |
64 bit compiler | Delphi XE2 |
64 bit binary versions of the Delphi 32 and 64 bit compilers | Delphi 12.2 |
A | |
Abstract classes | Delphi 2006 |
Actions & action lists | Delphi 4 |
Android 32 bit compiler & support | Delphi XE5 |
Android 64 bit compiler | Delphi 10.4 |
Anonymous methods / closures | Delphi 2009 |
AnsiString replaces ShortString as the default string type | Delphi 2 |
AnsiStrings (System.AnsiStrings) unit introduced | Delphi XE4 |
Atomic intrinsic functions AtomicExchange, AtomicIncrement, AtomicCmpExchange & AtomicDecrement | Delphi XE3 |
Attributes | Delphi 2010 |
B | |
Binary integer literals, e.g. %100101 | Delphi 11 |
Build groups | Delphi XE |
C | |
class constructors / destructors | Delphi 2010 |
Class data (class var ) | Delphi 2006 |
Class helpers | Delphi 2006 |
Class helpers and record helpers can no longer access private data of the related class or record | Delphi 10.1 |
Class properties | Delphi 2005 |
Currency type | Delphi 2 |
Custom managed records, with Initialize and Finalize class operators | Delphi 13 |
Custom managed records, with Initialize and Finalize class operators simplified with implicit Self references | Delphi 10.4 |
D | |
Default intrinsic compiler routine (undocumented) that gets the default value of a given type | Delphi 2009 |
Default parameters in functions, procedures & methods | Delphi 4 |
delayed keyword (for loading of DLLs) | Delphi 2010 |
dependency directive (for specifying the dependencies of an external library) | Delphi XE4 |
deprecated directive | Delphi 6 |
deprecated directive with comment | Delphi 2009 |
DirectX 10 support | Delphi XE3 |
DirectoryExists function moved to SysUtils unit from FileCtrl | Delphi 6 |
Digit separators in integer and floating point literals: e.g. 1_000_000 | Delphi 11 |
dispid directive | Delphi 3 |
dispinterface directive | Delphi 3 |
Dynamic array concatenation and addition extensions. Dynamic arrays can be initialised by assigning an array constant, as in DI := [1, 2, 3]; and can be concatenated using code like DI := DI + [1, 2, 3]; or DI := DJ + DK , where DI, DJ DK are all dynamic integer arrays | Delphi XE7 |
Dynamic array intrinsic routines. The Concat, Insert & Delete compiler intrinsic routines now operate on dynamic arrays | Delphi XE7 |
Dynamic arrays | Delphi 4 |
E | |
EncodePath, EncodeAuth, EncodeQuery & EncodeForm functions | Delphi 10.1 |
EOSError (instead of EWin32Error) | Delphi 6 |
ExcludeTrailingPathDelimiter function | Delphi 6 |
Exit with result parameter | Delphi 2009 |
experimental hinting directive | Delphi 6 |
Extended type changes size depending upon the hardware and operating system | Delphi XE2 |
F | |
FastMM memory manager | Delphi 2006 |
Final methods | Delphi 2006 |
FireMonkey cross platform framework (FMX) | Delphi XE2 |
FireMonkey cross platform framework v2 (FM) | Delphi XE3 |
FixedInt & FixedUInt types - 32 bit signed & unsigned integers respectively across all platforms | Delphi XE8 |
Floating point number comparison routines added to Math unit. | Delphi 6 |
Focus mode in IDE editor | Delphi 12.2 |
for.. in loops | Delphi 2005 |
Form inheritence | Delphi 2 |
Frames | Delphi 5 |
Function inlining | Delphi 2005 |
G | |
Generics | Delphi 2009 |
GetCompilerVersion & GetRTLVersion routines to get compiler & RTL versions as 16 bit unsigned integers with major version in the high byte and minor version in the low byte | Delphi 12 |
GetTypeKind intrinsic compiler function (undocumented) | Delphi XE7 |
H | |
HasWeakRef intrinsic compiler function (undocumented) | Delphi XE7 |
Hash (System.Hash) unit | Delphi XE8 |
I | |
IInterface | Delphi 6 |
implements keyword for properties | Delphi 4 |
IncludeTrailingPathDelim function | Delphi 6 |
Inline keyword | Delphi 2005 |
Inline if statement (Conditional Ternary Operator) | Delphi 13 |
Inline variable declarations | Delphi 10.3 |
Inner exceptions | Delphi 2009 |
Insert and Delete RTL routines can be used with dynamic arrays in a similar way to how they are used with strings | Delphi XE7 |
Int8 type | Delphi 2009 |
Int16 type | Delphi 2009 |
Int32 type | Delphi 2009 |
Int64 type | Delphi 4 |
Interface to object casting | Delphi 2010 |
iOS 32 bit compiler & support reintroduced | Delphi XE4 |
iOS 64 bit compiler | Delphi XE8 |
IOUtils unit | Delphi 2010 |
is not operator | Delphi 2013 |
IsConstValue intrinsic compiler function (undocumented) | Delphi XE7 |
IsManagedType intrinsic compiler function (undocumented) | Delphi XE7 |
IUnknown (COM based interfaces)7 | Delphi 3 |
L | |
LargeUint type | Delphi 13 |
library directive | Delphi 6 |
Linux compiler for server applications | Delphi 10.2 |
Linux client platform support added via 3rd party FMXLinux library | Delphi 10.3.1 |
Live bindings for VCL & FMX | Delphi XE2 |
Long string literal support: string literals can now be longer than 255 characters | Delphi 12 |
LongInt & LongWord type sizes become platform dependent: 32 bit on 32 bit platforms, 64 bit on 64 bit platforms | Delphi XE8 |
LongWord type | Delphi 4 |
M | |
MacOS ARM 64 bit compiler | Delphi 11 |
macOS 32 bit compiler | Delphi XE2 |
macOS 64 bit compiler | Delphi 10.4 |
Margins and Padding properties on TControl | Delphi 2006 |
MariaDB support added | Delphi 10.2 |
Markdown support in IDE | Delphi 11.2 |
Metropolis UI for Windows 8 back to XP | Delphi XE3 |
Mobile form designer | Delphi XE4 |
MSBuild & build events | Delphi 2007 |
Multiline string literals, delimited by triple quotes (''' ) | Delphi 12 |
MySQL support | Delphi 2006 |
N | |
Namespaces [more info] | Delphi 2005 |
NaN intrinsic function | Delphi 13 |
NameOf type | Delphi 4 |
NativeInt & NativeUInt types | Delphi 7 |
NativeInt & NativeUInt types become weak references. They can no longer be used as separate types | Delphi 12 |
Nested constants within classes / records | Delphi 2005 |
Nested types within classes | Delphi 2005 |
not in operator | Delphi 13 |
O | |
OLE automation | Delphi 2 |
Operator overloading on records | Delphi 2006 |
out parameters & keywords | Delphi 3 |
overload directive | Delphi 4 |
Overloading for functions, procedures and methods | Delphi 4 |
P | |
package keyword and change to install components in packages | Delphi 3 |
Parallel library in RTL | Delphi XE7 |
platform directive | Delphi 6 |
Pointer type size becomes platform dependent: 32 bit on 32 bit platforms, 64 bit on 64 bit platforms | Delphi XE2 |
PosEx introduced | Delphi 7 |
PosEx became obsolete. Pos got third offset argument | Delphi XE3 |
R | |
real type changes from 8 bytes in size to 6 bytes and becomes an alias for Double. The Real48 is introduced as a 6 byte replacement for the old real | Delphi 4 |
RaiseLastOSError procedure | Delphi 6 |
Record Helpers for simple types | Delphi XE3 |
Record Helpers for simple types TDateTime and Currency types | Delphi 11 |
Records with methods | Delphi 2006 |
register calling convention | Delphi 2 |
Regular expression library | Delphi XE |
resourcestring statement | Delphi 3 |
REST services components | Delphi XE5 |
RTTI enhancements | Delphi 2010 |
S | |
SafeLoadLibrary function | Delphi 5 |
Scoped enumerators (must have type name prefix) | Delphi 2009 |
Sealed classes | Delphi 2006 |
Sensor support for VCL & FMX | Delphi XE3 |
Skia integration | Delphi 12 |
Smart Code Insight with embedded AI | Delphi 12.2 |
Split editor views in IDE | Delphi 12 |
static directive for class methods | Delphi 2005 |
strict private and strict protected visibility specifiers | Delphi 2005 |
string type is UnicodeString | Delphi 2009 |
StrUtils unit | Delphi 6 |
T | |
TApplication.MainFormOnTaskbar property | Delphi 2007 |
TArray type in System unit | Delphi 2010 |
TBytes alias for array of Byte | Delphi 2007 |
Text format form files | Delphi 5 |
TForm.ShowInTaskbar property | Delphi 12 |
TFormatSettings and overloaded format and conversion routines that use it | Delphi 7 |
threadvar keyword and threading support | Delphi 2 |
TNoRefCountObject non-reference-counted IInterface implementation | Delphi 11 |
TOrderedDictionary - a sorted generic dictionary class | Delphi 12.2 |
TObject.Equals virtual method | Delphi 2009 |
TObject.GetHashCode virtual method | Delphi 2009 |
TObject.ToString virtual method | Delphi 2009 |
TObject.UnitName method | Delphi 2009 |
Touch support | Delphi 2010 |
TPair<TKey,TValue> record | Delphi 2009 |
TParallelArray - a class to enable running of some operations in parallel threads | Delphi 12.2 |
TProc<T1,...>, TFunc<T1,...> & TPredicate<T> | Delphi 2010 |
TRegistry supports access flags | Delphi 6 |
TRegistry.OpenKeyReadOnly method | Delphi 4 |
TryStrToXXXX routines added to SysUtils | Delphi 6 |
TStream supports 64 bit size and seek offsets | Delphi 6 |
TStringList.Create(OwnsObjects: Boolean) constructor overload | Delphi 2009 |
Typed constants can no longer be assigned values by default. The {$J+} compiler directive must be used to restore previous behaviour | Delphi 6 |
Types unit | Delphi 6 |
U | |
UInt8 type | Delphi 2009 |
UInt16 type | Delphi 2009 |
UInt32 type | Delphi 2009 |
UInt64 type | Delphi 7 |
Unicode identifier names | Delphi 2005 |
Unicode source files | Delphi 2005 |
Unicode support (inc Windows API) | Delphi 2009 |
UnicodeString type | Delphi 2009 |
Unit conversion handling (that's unit as in mm or inches, not unit as in source code unit) | Delphi 6 |
Unit scope names [More info] | Delphi XE2 |
UTF8 source files | Delphi 2005 |
UTF8Decode and UTF8Encode routines | Delphi 6 |
UTF8String type | Delphi 6 |
V | |
Variants unit | Delphi 6 |
VCL styles | Delphi XE2 |
W | |
WebStencils - scriptable text-processing engine | Delphi 12.2 |
WideString type | Delphi 3 |
Windows 7 & 8.1 styles | Delphi XE6 |
Windows 10 styles | Delphi 10 |
Windows Vista support (glass & themes) | Delphi 2007 |
Windows XP themes | Delphi 7 |
X | |
XML support | Delphi 5 |
XMLDoc documentation | Delphi 2005 |
Z | |
Zip file support added with new TZipFile class | Delphi XE2 |
Embarcadero Delphi 10.4 does not support Windows 7. Delphi 10.3 still does.
RAD Studio 12 offers official support for iOS 17 (for Delphi only), Android 14, and macOS Sonoma. RAD Studio 12 also supports Ubuntu 22 LTS and Windows Server 2022.
No comments:
Post a Comment