What is not translated

Top  Previous  Next

There are some fundamental problems in the conversion of Delphi code to C# that cannot be solved by an automatic translator. Even constructs that Delphi2C# normally handles correctly may fail in complex or deeply nested situations. In some cases Delphi2C# generates explicit todo comments where manual completion is required.

 

Some Delphi constructs, which aren't, automatically translated yet are:

 

Parts of the Delphi RTL directly access the virtual method table (VMT) of objects. These mechanisms are not reproduced. One important consequence is that form streaming and related mechanisms cannot work exactly like in Delphi.
Inline assembler code cannot be used in C#
Several special compiler directives such as {$J+} are not supported
virtual class methods.
Delphi2C# always assumes unique names. However, symbols from the operating system or third-party libraries may use different capitalization and therefore cause naming conflicts.
Some problems with constructors remain. E.g. Delphi2C# cannot distinguish constructors with equal signatures.
Class helpers cannot change the fields of the helped class itself, though this is possible for records
Manual post-processing is required to achieve proper const-correctness.
The effects of the ZEROBASEDSTRING directive are not corrected automatically.
While typed pointers can be simulated,the compilation of code using untyped pointers often fails.
The keyword absolute cannot be converted adequately
Little effort has been done to test the COM technologies of the Delphi ActiveX framework.
At the current state Delphi2C# doesn't deal with message maps.
At the current state Delphi2C# doesn't deal with method resolution clauses

 

There are more items, which can be translated partially only.

 

 

Special problems:

 

lifetime extension of bound variables

 

 

 

Most of the basic input output types and functions are converted, but not all. E.g. the writing and reading "file of record" isn't possible yet. Also the width and precision arguments in write operations aren't converted correctly yet.

 

 

 



This page belongs to the Delphi2C# Documentation

Delphi2C# home  Content