& 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 |