将 C 头文件转换为 delphi

标签 c delphi dll header

int  WINAPI  BiMICRSetReadBackFunction(
    int  nHandle,
    int  (CALLBACK  *pMicrCB)(void),
    LPBYTE  pReadBuffSize,
    LPBYTE  readCharBuff,
    LPBYTE  pStatus,
    LPBYTE  pDetail);

    typedef int (CALLBACK* MICRCallback)(void);
    typedef int (CALLBACK* StatusCallback)(DWORD);

    int WINAPI BiSetInkStatusBackFunction(int nHandle,
        int (CALLBACK *pStatusCB)(DWORD dwStatus)
);

我需要将此函数转换为 Delphi。

我尝试使用headconv4.2,但生成的静态单元未完成,并且编译时出现错误。

预先感谢您的帮助:D

最佳答案

假设WINAPICALLBACK始终为__stdcallDWORDunsigned intLPBYTE 作为 unsigned char *,您可以尝试我所做的这个脏转换:

unit UHeader;

interface

// Data types

type
  PByte = ^Byte;
  PPByte = ^PByte;

// Prototypes

type
  TMICRCallback = function: Integer; stdcall;
  TStatusCallback = function(dwParam: Cardinal): Integer; stdcall;

// Functions

type
  TBiMICRSetReadBackFunction =
    function(nHande: Integer;
             pMicrCB: TMICRCallback;
             pReadBuffSize: PByte;
             readCharBuff: PByte;
             pStatus: PByte;
             pDetail: PByte
    ): Integer; stdcall;

var
  BiMICRSetReadBackFunction: TBiMICRSetReadBackFunction;

type
  TBiSetInkStatusBackFunction =
    function(nHandle: Integer;
             pStatusCB: TStatusCallback
    ): Integer; stdcall;

var
  BiSetInkStatusBackFunction: TBiSetInkStatusBackFunction;

implementation

end.

不过,我并不完全确定这是否正确......但这可能是您尝试自己转换它的途径。

关于将 C 头文件转换为 delphi,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12592697/

相关文章:

delphi - 设置 TStringGrid 上选定行的背景颜色

c - memcpy 部分复制到自身

forms - 如何使表单像屏幕一样 float 在工作区中(移动、调整大小、最大化、最小化)?

c - 没有初始化的for循环中的for循环

delphi - Delphi>垂直扫描线? (获取列而不是行?)

c++ - 将 std::string 传递给 C++ DLL 以便与 C# dll 一起使用

c# - 我可以将文件放在哪里,以便非管理员可以编辑它们并可供所有用户访问?

c# - 从 C# 调用 C++ DLL

c - 统一认证库

c - float 中的 "f"后缀