3
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

4

2 に答える 2

3

WINAPIであり、CALLBACK常に であり__stdcallDWORDunsigned intあり、LPBYTEasであると仮定すると、私が行ったこの汚い変換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.

ただし、これが正しいかどうかは完全にはわかりません...しかし、これはあなたが自分で変換しようとする道かもしれません.

于 2012-09-26T00:29:19.127 に答える
2

直訳は次のようになります。

type
  MICRCallback = function: Integer; stdcall; 
  StatusCallback = function(dwStatus: DWORD): Integer; stdcall; 

function BiMICRSetReadBackFunction( 
  nHandle: Integer; 
  pMicrCB: MICRCallback; 
  pReadBuffSize: PByte; 
  readCharBuff: PByte; 
  pStatus: PByte; 
  pDetail: PByte
): Integer; stdcall; 

function BiSetInkStatusBackFunction(
  nHandle: Integer;
  pStatusCB: StatusCallback
): Integer; stdcall; 

DLL から関数をインポートする場合は、DLL ファイル名を関数宣言に追加する必要があります。

function BiMICRSetReadBackFunction( 
  nHandle: Integer; 
  pMicrCB: MICRCallback; 
  pReadBuffSize: PByte; 
  readCharBuff: PByte; 
  pStatus: PByte; 
  pDetail: PByte
): Integer; stdcall; external 'filename.dll';

function BiSetInkStatusBackFunction(
  nHandle: Integer;
  pStatusCB: StatusCallback
): Integer; stdcall; external 'filename.dll';
于 2012-09-26T01:24:03.550 に答える