Search code examples
node.jsdelphinode-ffi

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

Thanks


Solution

  • 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");