What is not translated

Top  Previous  Next

Some fundamental differences between Delphi and C# cannot be resolved reliably by an automatic source-code translator. Even language constructs that Delphi2C# normally converts correctly may fail in highly complex or deeply nested code.

 

Where manual intervention is required, Delphi2C# may insert explicit TODO comments into the generated code.

 

Unsupported or Partially Supported Delphi Features

 

The following Delphi features are currently not translated automatically or are supported only to a limited extent:

 

Some parts of the Delphi RTL access an object's virtual method table (VMT) directly. These mechanisms cannot be reproduced in C#. As a result, form streaming and related functionality cannot behave exactly as they do in Delphi.
Inline assembler code cannot be converted because C# does not support inline assembly.
Compiler switches that affect program behavior are not supported.
Delphi2C# assumes that all identifiers have unique names. Operating-system APIs and third-party libraries may contain identifiers that differ only in capitalization, which can cause naming conflicts in C#.
Delphi's implicit Self behavior in inherited virtual class methods is not fully emulated.
Some constructor-related limitations remain. For example, Delphi2C# cannot distinguish between constructors that have identical signatures.
Class helpers cannot modify fields of the class they extend. This is possible for record helpers, but not for class helpers.
The effects of the ZEROBASEDSTRING directive are not corrected automatically.
Typed pointers can often be simulated. Code that uses untyped pointers, however, may fail to compile.
The absolute keyword cannot be translated adequately.
COM-related technologies from the Delphi ActiveX framework have received only limited testing.
Message maps are currently not supported.
Method resolution clauses are currently not supported.

 

 

Runtime Features Reserved for Future Versions

 

The following specialized areas of the Delphi runtime are intentionally reserved for future updates:

 

complete Variant semantics;
Variant arrays and ByRef variants;
COM variant types;
Delphi package metadata;
native package resource lookup;
native exception handling and Structured Exception Handling (SEH) integration;
native resource-DLL switching;
component streaming through DefineProperties.

 

These limitations do not affect the normal managed use of the supported SysUtils functions.

 

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.

For example:

 

Reading and writing file of record types is not currently supported.
Width and precision parameters used in Write and related operations are not yet converted correctly.

 



This page belongs to the Delphi2C# Documentation

Delphi2C# home  Content