delphi language features which fpc does not have
Note: some new Delphi features are already implemented in FPC trunk.
- 1 New since D4
- 2 New since Delphi 2007
- 3 New since Delphi 2009
- 4 New since Delphi 2010
- 5 Misc
- 6 Already implemented
- 7 Reference
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:
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
Advanced records are implemented in FPC 2.6.X without record constructors. Record constructors are implemented in FPC 2.7.1 (trunk).
New since Delphi 2009
A good delphi reference is here: http://docwiki.embarcadero.com/RADStudio/en/Generics_Index
Partially implemented in 2.5.1/2.6.x, further improved in 2.7.1 by Sven
Support for ansistrings with a definable codepage
Initial implementation available in trunk (2.7.1). Useful for small time testing, but the whole of the codebase hasn't adapted (2011-10-18)
New since Delphi 2010
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.
Info is here: http://docwiki.embarcadero.com/RADStudio/en/Libraries_and_Packages#Delayed_Loading Some info about internals:
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)
- (Library) packages
- "automated" keyword, which is like "public", but generates COM specific RTTI. Afaik this kind of COM usage is deprecated though.
AS and IS extended for interfaces
New since Delphi 2010. Info is here:
Implemented in FPC 2.6.0.