API parameter casts

Top  Previous  Next

What is partially translated > API parameter casts

The Delphi files, which bridge the gap between the Delphi code and the API of the operation system, sometimes are too vague to allow a precise back translation. For example the thirs parameter of the function SetFilePointer in Winapi.Windows.pas is specified as Pointer:

 

function SetFilePointer(hFile: THandle; lDistanceToMove: Longint;

  lpDistanceToMoveHigh: Pointer; dwMoveMethod: DWORD): DWORD; stdcall;

 

The original specification is:

 

WINBASEAPI

DWORD

WINAPI

SetFilePointer(

    _In_ HANDLE hFile,

    _In_ LONG lDistanceToMove,

    _Inout_opt_ PLONG lpDistanceToMoveHigh,

    _In_ DWORD dwMoveMethod

    );

 

The type of the third parameter is specified here as PLONG.  If a void Pointer is passed instead of a PLONG Visual Studio produces the error message:

 

Conversion of argument 3 from "void *" to "PLONG" is not possible

 

 

Another example:

 

type DWORD = Cardinal;

 

 

Delphi2Cpp II converts a Cardinal to unsigned int. But it's not possible to assign an unsigned int* to PDWORD or to LPDWORD in C++,

 

 



This page belongs to the DelphiXE2Cpp11 Documentation

DelphiXE2Cpp11 home  Content