user3234437 user3234437 - 9 months ago 122
Node.js Question

Calling Delphi stdcall function with pAnisChar from node js

I have a legacy Delphi dll which requires a json string as input (pAnsiChar) and returns an int as success or failure. I have managed to connect to the dll from nodejs using node-ffi. However, i am getting return int value points to invalid json string.

Could someone point me in the direction as to how to call a Delphi dll with pAnsiChar as function arguments from node


Answer Source

PAnsiChar in Delphi is a char* in C/C++. In the FFI declaration for the DLL function, simply declare the PAnsiChar parameter as a "string", which is a null-terminated char* in FFI.

For example, given this Delphi function:

function ProcessJson(Json: PAnsiChar): Integer; stdcall;

The node.js code would look something like this:

var ffi = require('ffi');

var mydll = ffi.Library('mydll', {
  'ProcessJson': [ 'int', [ 'string' ] ]

var ret = mydll.ProcessJson("json content here");