7.3.1 Missing language constructs

At the level of language compatibility, FPC is very compatible with Delphi: it can compile most of FreeCLX, the free Widget library that was shipped with Delphi 6, Delphi 7 and Kylix.

Currently, the only missing language constructs are:

1.
Dynamic methods are actually the same as virtual.
2.
Const for a parameter to a procedure does not necessarily mean that the variable or value is passed by reference.
3.
Packages are not supported.

There are some inline assembler constructs which are not supported, and since Free Pascal is designed to be platform independent, it is quite unlikely that these constructs will be supported in the future.

Note that the -Mobjfpc mode switch is to a large degree Delphi compatible, but is more strict than Delphi. The most notable differences are:

1.
Parameters or local variables of methods cannot have the same names as properties of the class in which they are implemented.
2.
The address operator is needed when assigning procedural variables (or event handlers).
3.
AnsiStrings are not switched on by default.
4.
Hi/Lo functions in Delphi are always evaluated using a word argument, in FPC there are several overloaded versions of these functions, and therefor the actual type of the passed variable is used to determine which overload is called. This may result in different results.