Delphi language features missing from the Free Pascal Compiler
Note: some new Delphi features are already implemented in FPC trunk.
New since D4
Exporting of overloaded functions
(version not entirely sure, but came in with overloading, so definitely pre-D6)
In library packages select an overloaded variant to export. Assume we have some overloaded methods:
function doSomeThing(a:type1):type2;stdcall; function doSomeThing(a:type3):type4;stdcall;
and in the library (for building the dll using the unit above) we want to export them:
exports
doSomeThing(a:type1) name 'doSomeThingTYPE1', doSomeThing(a:type3) name 'doSomeThingTYPE3';
implements delegation of interfaces
Delegating interfaces to classes is not always supported,
New since Delphi 2007
New since Delphi 2009
Anonymous Methods
- http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/anonymousmethods_xml.html
- http://delphi.about.com/od/objectpascalide/a/understanding-anonymous-methods-in-delphi.htm
Supported since 3.3.1: Support for Function References and Anonymous Functions
New since Delphi 2010
Custom Attributes
Custom Attributes are a language feature in Delphi that allow annotating types and type members with special objects that carry additional information. Attributes extend the object-oriented model with aspect-oriented elements.
Supported since 3.3.1: Custom Attributes
Enhanced RTTI
http://docwiki.embarcadero.com/RADStudio/en/RTTI_directive_(Delphi)
Delayed directive
Info is here: http://docwiki.embarcadero.com/RADStudio/en/Libraries_and_Packages#Delayed_Loading Some info about internals:
- http://blogs.embarcadero.com/abauer/2009/08/25/38894
- http://blogs.embarcadero.com/abauer/2009/08/29/38896
- http://blogs.embarcadero.com/chrishesik/2009/11/02/35056
fpc wiki about that topic: http://wiki.freepascal.org/Dynamically_loading_headers
Originally I thought that delayed is similar to weakexternal which FPC has for some platforms but after reading this: http://docwiki.embarcadero.com/CodeExamples/XE3/en/DelayedLoading_(Delphi) I understand that this is simply a wrapper around LoadLibrary and GetProcessAdress with automatic loading and unloading.--Paul Ishenin 13:45, 18 January 2013 (UTC)
Misc
- (Library) packages
- "automated" keyword, which is like "public", but generates COM specific RTTI. Afaik this kind of COM usage is deprecated though.
Already implemented
FPC 3.0.4
Advanced records
http://docwiki.embarcadero.com/RADStudio/en/Structured_Types#Records_.28advanced.29
FPC 2.6.0
AS and IS extended for interfaces
New since Delphi 2010. Info is here:
- http://docwiki.embarcadero.com/RADStudio/en/Interface_References#Casting_Interface_References_to_Objects
- http://blogs.embarcadero.com/abauer/2009/08/21/38893
Implemented in FPC 2.6.0.