[Lazarus] Please define "delphi compatibility"

Hans-Peter Diettrich DrDiettrich1 at aol.com
Thu Oct 4 03:06:08 CEST 2012

Chavoux Luyt schrieb:
> I would also like some clarification on this question. I think
> personally that it should be a one-way conversion process... i.e. it
> should be possible to port/import any Delphi project into Lazarus
> without problems, but not necessarily the other way round.
> One possible way to implement it is to create the exact same "base
> class" for all the Delphi components and then have the Lazarus (LCL)
> components inherit from these base classes.The descendent classes can
> then have all the nice-to-have feature like extra properties etc. that
> we want in Lazarus (or just be an exact copy of its parent class if no
> change is required). In this case it might even be possible to port
> back from Lazarus to Delphi, as long as you only use the "base class"
> components and not the LCL inherited classes.

That's problematic, since already LCL TControl has some more properties 
than in the VCL. Some modifications are required for widgetset 
compatibility, so that even the Win32 widgetset does not implement 
everything as in the VCL.

For best portability, in both directions, I'd suggest an *true* 
Windows/VCL widgetset, which may not be (fully) available on other 

And of course the LCL will never include the new Delphi/RadStudio 
cross-platform widgetset, which now exists in parallel to the VCL. I'm 
not sure whether Lazarus can ever support such an LCL-incompatible 

> But I think FPC might have a similar problem with the Delphi language
> that has already changed a bit from the original. What is the the
> situation on that side?

Most FPC incompatibilities result from a mix of features from different 
Delphi versions, so that it's impossible to maintain compatibility with 
one specific Delphi version. Most boring is the {$mode} compiler option, 
which exists only in FPC, along with other syntax incompatibilities. But 
these can be made somewhat compatible by {$IFDEF FPC} directives. A 
really breaking change will be the UnicodeString, introduced in 
D2009[?], once it will replace the previous generic/default string type 

It may or may not be possible to use older FPC versions for true 
compatibility with older Delphi versions. But since the LCL requires the 
latest FPC release version, it will be impossible to create a VCL 
compatible LCL now, fully compatible with older Delphi versions.


More information about the Lazarus mailing list