Difference between revisions of "Delphi language features missing from the Free Pascal Compiler"

From Lazarus wiki
Jump to navigationJump to search
(Clarified things have already been implemented in 2.6.x/2.7.x)
Line 1: Line 1:
Note: some of 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 Delphi 2007 ==
 
== New since Delphi 2007 ==
Line 26: Line 26:
 
== New since Delphi 2010 ==
 
== New since Delphi 2010 ==
 
==== Custom Attributes ====
 
==== Custom Attributes ====
 +
'''To do: description here'''
 
==== Enhanced RTTI ====
 
==== Enhanced RTTI ====
 
http://docwiki.embarcadero.com/RADStudio/en/RTTI_directive_(Delphi)
 
http://docwiki.embarcadero.com/RADStudio/en/RTTI_directive_(Delphi)
Line 39: Line 40:
 
fpc wiki about that topic: http://wiki.freepascal.org/Dynamically_loading_headers
 
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 undersatnd that this is simple a wrapped around LoadLibrary and GetProcessAdress with automatic loading and unloading.--[[User:Paul Ishenin|Paul Ishenin]] 13:45, 18 January 2013 (UTC)
+
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.--[[User:Paul Ishenin|Paul Ishenin]] 13:45, 18 January 2013 (UTC)
  
 +
== Misc ==
 +
# [[packages|(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 2.7.1/trunk ===
 +
==== Advanced records ====
 +
See above.
 +
 +
=== FPC 2.6.0 ===
 
==== AS and IS extended for interfaces ====
 
==== AS and IS extended for interfaces ====
 
 
Info is here:  
 
Info is here:  
 
#http://docwiki.embarcadero.com/RADStudio/en/Interface_References#Casting_Interface_References_to_Objects
 
#http://docwiki.embarcadero.com/RADStudio/en/Interface_References#Casting_Interface_References_to_Objects
 
#http://blogs.embarcadero.com/abauer/2009/08/21/38893
 
#http://blogs.embarcadero.com/abauer/2009/08/21/38893
  
Already implemented in FPC 2.6.0.
+
Implemented in FPC 2.6.0.
  
== Misc ==
 
# [[packages|(Library) packages]]
 
# "automated" keyword, which is like "public", but generates COM specific RTTI. Afaik this kind of COM usage is deprecated though.
 
  
 
== Reference ==
 
== Reference ==

Revision as of 08:44, 29 June 2013

Note: some new Delphi features are already implemented in FPC trunk.

New since Delphi 2007

Advanced Records

http://docwiki.embarcadero.com/RADStudio/en/Structured_Types#Records_.28advanced.29

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

Generics Syntax

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)

Anonymous Methods

http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/anonymousmethods_xml.html

New since Delphi 2010

Custom Attributes

To do: description here

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:

  1. http://blogs.embarcadero.com/abauer/2009/08/25/38894
  2. http://blogs.embarcadero.com/abauer/2009/08/29/38896
  3. 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

  1. (Library) packages
  2. "automated" keyword, which is like "public", but generates COM specific RTTI. Afaik this kind of COM usage is deprecated though.

Already implemented

FPC 2.7.1/trunk

Advanced records

See above.

FPC 2.6.0

AS and IS extended for interfaces

Info is here:

  1. http://docwiki.embarcadero.com/RADStudio/en/Interface_References#Casting_Interface_References_to_Objects
  2. http://blogs.embarcadero.com/abauer/2009/08/21/38893

Implemented in FPC 2.6.0.


Reference

  1. http://edn.embarcadero.com/article/34324
  2. http://edn.embarcadero.com/article/images/39076/New_Delphi_Coding_Styles_and_Architectures.pdf
  3. http://docwiki.embarcadero.com/RADStudio/en/What's_New_in_Delphi_and_C%2B%2BBuilder_2010