DelphiDabbler Wiki

Delphi Version Features

This page contains notes about which features were introduced in which versions of Delphi1.

If you have any additions or corrections please edit the page (password needed) or let me know.

& operator for treating keywords as identifiersDelphi 2006
{$IFEND} directive no longer required to close {$IF} statements: {$ENDIF} can now be used instead.2Delphi XE4
{$LEGACYIFEND} directive2Delphi XE5
{$MESSAGE} directiveDelphi 6
{$WARN} directiveDelphi 7
64 bit compilerDelphi XE2
Abstract classesDelphi 2006
Anonymous methods / closuresDelphi 2009
AttributesDelphi 2010
class constructors / destructorsDelphi 2010
Class data (class var)Delphi 2006
Class helpersDelphi 2006
Class propertiesDelphi 2005
delayed keyword (for loading of DLLs)Delphi 2010
deprecated directiveDelphi 6
deprecated directive with commentDelphi 2009
DirectoryExists function moved to SysUtils unit from FileCtrlDelphi 6
Dynamic arraysDelphi 4
EOSError (instead of EWin32Error)Delphi 6
ExcludeTrailingPathDelimiter functionDelphi 6
Exit with result parameterDelphi 2009
Final methodsDelphi 2006
Floating point number comparison routines added to Math unit.Delphi 63
for .. in loopsDelphi 2005
FramesDelphi 5
Function inliningDelphi 2005
GenericsDelphi 2009
IInterfaceDelphi 6
IncludeTrailingPathDelim functionDelphi 6
inline keywordDelphi 2005
Inner exceptionsDelphi 2009
Int8 typeDelphi 2009
Int16 typeDelphi 2009
Int32 typeDelphi 2009
Int64 typeDelphi 4
Interface to object castingDelphi 2010
library directiveDelphi 6
LongWord typeDelphi 4
Margins and Padding properties on TControlDelphi 2006
Nested constants within classes / recordsDelphi 2005
Nested types within classesDelphi 2005
Operator overloading on recordsDelphi 2006
Overloading for functions, procedures and methodsDelphi 4
platform directiveDelphi 6
RaiseLastOSError procedureDelphi 6
Record Helpers for simple typesDelphi XE3
Records with methodsDelphi 2006
resourcestring statementDelphi 3
RTTI enhancementsDelphi 2010
SafeLoadLibrary functionDelphi 5
Scoped enumerators (must have type name prefix)Delphi 2009
Sealed classesDelphi 2006
static directive for class methodsDelphi 2005
strict private and strict protected visibility specifiersDelphi 2005
string type is UnicodeStringDelphi 2009
StrUtils unitDelphi 6
TApplication.MainFormOnTaskbar propertyDelphi 2007
TArray<T> type in System unit.Delphi 2010
TBytes alias for array of ByteDelphi 2007
Text format form filesDelphi 5
TFormatSettings and overloaded format and conversion routines that use itDelphi 7
TObject.Equals virtual methodDelphi 2009
TObject.GetHashCode virtual methodDelphi 2009
TObject.ToString virtual methodDelphi 2009
TObject.UnitName methodDelphi 2009
Touch supportDelphi 2010
TRegistry supports access flagsDelphi 6
TRegistry.OpenKeyReadOnly methodDelphi 4
TryStrToXXXX routines added to SysUtilsDelphi 6
TStream supports 64 bit size and seek offsetsDelphi 6
TStringList.Create(OwnsObjects: Boolean) constructor overloadDelphi 2009
Types unitDelphi 6
UInt8 typeDelphi 2009
UInt16 typeDelphi 2009
UInt32 typeDelphi 2009
UInt64 typeDelphi 7
Unicode identifier namesDelphi 2005
Unicode source filesDelphi 2005
Unicode support (inc Windows API)Delphi 2009
UnicodeString typeDelphi 2009
Unit conversion handling (that's unit as in mm or inches, not unit as in source code unit)Delphi 6
UTF8 source filesDelphi 2005
UTF8Decode and UTF8Encode routinesDelphi 6
UTF8String typeDelphi 6
Variants unitDelphi 6
VCL stylesDelphi XE2
XMLDoc documentationDelphi 2005


1 All this information relates to the native Delphi compiler, not the .NET compiler.

2 From Delphi XE5 the use of the {$IFEND} directive results in a compiler error unless a {$LEGACYIFEND} directive precedes the first {$IFEND} directive or unless the use of legacy {$IFEND} is enabled in project options.

3 Source: EFG's Computer Lab. This source also states that the Math unit did not change from Delphi 4 to Delphi 5.

Page last modified on February 24, 2014, at 11:22 AM