Search code examples
delphidelphi-xe2handle

"Handle" Data Type Equivalent


I am reading the documentation for MoPaQ and trying to convert the functions over to Delphi because some of the data types mentioned in the documentation do not directly match the ones in Delphi.

This is the function I am having troubles with:

HANDLE WINAPI MpqOpenArchiveForUpdate(LPCSTR lpFileName, DWORD dwCreationDisposition, DWORD dwHashTableSize);

In Delphi, I have converted it as:

function MpqOpenArchiveForUpdate(lpFileName: Char, CreationDisposition, dwHashTableSize: LongWord); external 'lmpqapi.dll';

I am missing the return type for my function which I believe is HANDLE (according to the documentation). If that is the case, what is the Delphi equivalent for the HANDLE data type?


Solution

  • The equivalent would be something along these lines:

    function MpqOpenArchiveForUpdate(lpFileName: LPCSTR; 
      dwCreattionDisposition,
      dwHasTableSize: DWord): THandle; stdcall; external 'lmpqapi.dll';
    

    Note that you'll have to find out if MoPacQ is Unicode-aware or not; if it's not, change the definition of lpFileName to PAnsiChar instead.

    Remy points out in his comment below that Delphi maps LPCSTR to the proper PAnsiChar type on all versions, so you should use it that way.