Stack Overflow is a community of 4.7 million programmers, just like you, helping each other.

Join them; it only takes a minute:

Sign up
Join the Stack Overflow community to:
  1. Ask programming questions
  2. Answer and help your peers
  3. Get recognized for your expertise

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 XE2, 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 greatful.

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

share|improve this question
    
Q: So why exactly do you need such a list? Q: Are you trying to create one code set (perhaps a component or library) that supports all platforms between BDS2007 and XE2 (i.e. uses no features newer than BDS2007)? Q: If so, why not just try compiling on 2007 and see what breaks? (PS: I'm still happily using BDS2006 ;)). – paulsm4 Dec 10 '11 at 22:03
8  
Simon check this question Assorted list of what's new in Delphi Language, RTL, VCL? , Also on my blog I mantain a updated List of changes between versions of Delphi – RRUZ Dec 10 '11 at 22:05
2  
@paulsm4 1) So I can account for feature limitations across versions in public libraries, 2) Yes (but not a Component Library necessarily), 3) Because it's easier to know in advance than constantly test on different versions every individual aspect of a library. Theoretically D2006 would work fine, but I'm not going to support it actively (no offense). – LaKraven Dec 11 '11 at 2:49
up vote 95 down vote accepted

Note that this answer only lists new language features

Here are the links to the RAD Studio docwiki:
- 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 3

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


To summarize:

Delphi 10 Seattle

  • Support for Android 5.1.1 and iOS 8.4
  • Improved OSX exception handling

Delphi XE8

Delphi XE7

Delphi XE6

  • Enum identifier names have no prefixes.

Delphi XE5

Delphi XE4

Delphi XE3

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.
  • 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;
  • 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

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

  • New compiler directives:
    • {$IFDEF MSWINDOWS}
    • {$IFDEF LINUX}
      [- {$LIBPREFIX}
    • {$LIBSUFFIX}
    • {$LIBVERSION}]52
    • {$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 false 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.
share|improve this answer
    
Ah wonderful! I couldn't find a way to get the Docwiki to show me pages specific to older versions of Delphi (pre XE2)... no idea why! This is wonderful, and has been marked as the correct answer! Thanks! – LaKraven Dec 10 '11 at 21:59
8  
On my blog I mantain a updated List of changes between versions of Delphi – RRUZ Dec 10 '11 at 22:08
1  
What is 'multi-unit namespaces'? – Andreas Rejbrand Dec 10 '11 at 23:08
3  
Holy Crap DELAYED, that is AWESOME! Why don't they give you this list when you upgrade! – Peter Turner Jan 26 '12 at 15:54
1  
This is not accurate. $LIBPREFIX et al directives are there at least since D7 (I suspect D6, since they are Kylix related) – Free Consulting Mar 23 '15 at 0:43

Just for complement the answer of Johan check this entry on my blog List of changes between versions of Delphi (Since Delphi 5) and the excellent page The TIndex which list most of the new features since delphi 2005 and resources about each one.

share|improve this answer
    
My antiviral software (Avast) told me that www.tindex.net is infected (maybe a false positive, hard to say). +1 anyway ;) – TLama Dec 10 '11 at 22:52
    
Sometime ago another delphi site delphi3000 was marked as dangerous for somes antivirus. – RRUZ Dec 10 '11 at 23:01
2  
I'm the owner of The TIndex and I can confirm that it is a false positive. – LachlanG Jan 5 '12 at 4:36

The jedi.inc file used by the Dephi JEDI project exposes a series of feature defines. If your project is MPL-compatible, you could even use it for feature detection and save yourself the trouble of reinventing that particular wheel.

For example, it defines SUPPORTS_FOR_IN if the compiler supports enumerators. One could wrap your enumerator code in an IFDEF checking for that define rather than checking for a particular compiler version.

share|improve this answer
    
Yes, this include is certainly helpful, but it lacks the completeness of a detailed list (hence this question). Thanks for the suggestion... consider the accepted answer to this question to be an enhancement on the information provided by jedi.inc :) – LaKraven Dec 12 '11 at 19:10
1  
@LaKraven: True, there's a lot of things it doesn't get, but for some it may be enough. It also has the advantage of being already done. :-) Personally, I think that flattening the VCL hierarchies, stripping the copyright headers, and tossing them all into a version control repository might be handy too. That way you can see when particular RTL/VCL features were implemented. – afrazier Dec 12 '11 at 19:30
    
@LaKraven, I believe what jedi.inc at least accurate, while Johan's list needs some verifications. – Free Consulting Mar 23 '15 at 0:51

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.