Difference between revisions of "Delphi language features missing from the Free Pascal Compiler"
m (Trev moved page delphi language features which fpc does not have to Delphi language features missing from the Free Pascal Compiler: Correct capitalisation; change "fpc" to "Free Pascal Compiler") |
|||
(8 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
Note: some new Delphi features are already implemented in [[FPC_New_Features_Trunk|FPC trunk]]. | Note: some new Delphi features are already implemented in [[FPC_New_Features_Trunk|FPC trunk]]. | ||
− | == New since | + | == 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, | |
+ | * [http://bugs.freepascal.org/view.php?id=16531 Mantis 16531] | ||
+ | * [http://bugs.freepascal.org/view.php?id=8951 Mantis 8591] | ||
+ | * [http://bugs.freepascal.org/view.php?id=23403 Mantis 23403] | ||
− | == | + | == New since Delphi 2007 == |
− | + | == New since Delphi 2009 == | |
==== Anonymous Methods ==== | ==== Anonymous Methods ==== | ||
− | + | #http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/anonymousmethods_xml.html | |
− | 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 |
== New since Delphi 2010 == | == New since Delphi 2010 == | ||
==== Custom Attributes ==== | ==== 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. | |
+ | |||
+ | http://delphi.about.com/od/oopindelphi/a/delphi-attributes-understanding-using-attributes-in-delphi.htm | ||
+ | |||
==== Enhanced RTTI ==== | ==== Enhanced RTTI ==== | ||
http://docwiki.embarcadero.com/RADStudio/en/RTTI_directive_(Delphi) | http://docwiki.embarcadero.com/RADStudio/en/RTTI_directive_(Delphi) | ||
Line 47: | Line 58: | ||
== Already implemented == | == Already implemented == | ||
− | === FPC | + | === FPC 3.0.4/trunk === |
==== Advanced records ==== | ==== Advanced records ==== | ||
− | + | http://docwiki.embarcadero.com/RADStudio/en/Structured_Types#Records_.28advanced.29 | |
=== FPC 2.6.0 === | === FPC 2.6.0 === |
Revision as of 06:37, 12 June 2021
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
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.
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/trunk
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.