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.
Reference
- http://edn.embarcadero.com/article/34324
- http://edn.embarcadero.com/article/images/39076/New_Delphi_Coding_Styles_and_Architectures.pdf
- http://docwiki.embarcadero.com/RADStudio/en/What's_New_in_Delphi_and_C%2B%2BBuilder_2010
From the Free Pascal wiki, page "Delphi language features missing from the Free Pascal Compiler", as it stood on 2023-08-08 after a change by Mattias2, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.
Talk about this page
Nobody has opened a bench for this page yet. Sign in to open one.
