|
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. |
| • | 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; |
| • | 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. |
|