henry60
henry60

Reputation: 463

Calling C DLL from Delphi program

In my Delphi code I have to call a DLL's function (written in Visual C) with the following prototype:

int PWFunc(LPCSTR szName, int nWidth, int nHeight, LPCSTR szFileName)

How can I convert Delphi AnsiString variables (for Name and FileName) into right type parameters (LPCSTR szName and szFileName) of function call ? I know that VC LPCSTR type corresponds to Delphi PAnsiChar type, but what is the right procedure to convert AnsiString to PAnsiChar ?

Upvotes: 2

Views: 4845

Answers (1)

Rudy Velthuis
Rudy Velthuis

Reputation: 28806

LPCSTR and LPSTR correspond to PAnsiChar, so that is what you use:

function PWFunc(szName: PAnsiChar; nWidth, nHeight: Longint;
  szFileName: PAnsiChar): Longint; cdecl { or stdcall, see documentation };
  external 'somedll.dll' name 'PWFunc';

You call it like:

X := PWFunc(PAnsiChar(AnsiString(SomeName)), 17, 33, 
       PAnsiChar(AnsiString(SomeFileName)));

Whether your function is stdcall or dcecl depends on compiler settings. Read the documentation. If in doubt, try both. It looks like cdecl to me, so start with that.

Upvotes: 2

Related Questions