有段代码,是c++builder 做的。具体是调用一.dll文件的定义。
我想把他转为delphi 定义,该如何做,请高手帮忙。
typedef void* __stdcall (OPENDEVICE)(int nMyAddress, HWND hWnd);
typedef void __stdcall (RECVEDITION)(LPTSTR lpEdition);
typedef BOOL __stdcall (CONNECT)(void* pDevice, LPCTSTR lpCommDef);
typedef void __stdcall (SETADDLOG)(void* pDevice, BOOL bAddLog);
typedef void __stdcall (SETINNERCODE)(void* pDevice, BOOL bBig5);
typedef void __stdcall (SETINNERCMD)(void* pDevice, BOOL bInner);
typedef void __stdcall (SETCOMMKEY)(void* pDevice, LPCTSTR lpCommKey);
typedef void __stdcall (SETWAITTIME)(void* pDevice, DWORD dwWaitTime);
typedef void* __stdcall (STARTICDMCMD)(void* pDevice, int nAddress, int nCommand,
void* pParameters = NULL, int nSizeOfParameter = 0);
typedef int __stdcall (GETSIZEOFDATA)(void* pCommand);
typedef BOOL __stdcall (GETDATA)(void* pCommand, void* pDataBuffer, int nSize);
typedef int __stdcall (GETCMDRESULT)(void* pCommand);
typedef void __stdcall (ENDICDMCMD)(void* pCommand);
typedef BOOL __stdcall (DISCONNECT)(void* pDevice);
typedef void __stdcall (CLOSEDEVICE)(void* pDevice);
typedef void __stdcall (SETMYADDRESS)(void* pDevice, int nAddress); typedef void __stdcall (SENDFRAME)(void* pDevice, LPCTSTR lpSendFrm);
typedef void __stdcall (CLEARRECVSTR)(void* pDevice);
typedef BOOL __stdcall (RECVSTREAM)(void* pDevice, LPTSTR lpRecvStr);
typedef BOOL __stdcall (RECVHDLC)(void* pDevice, LPTSTR lpRecvStr);
SENDFRAME* lpSendFrame;
CLEARRECVSTR* lpClearRecvStr;
RECVSTREAM* lpRecvStream;
RECVHDLC* lpRecvHDLC; OPENDEVICE* lpOpenDevice;
RECVEDITION* lpRecvEdition;
CONNECT* lpConnect;
SETADDLOG* lpSetAddLog;
SETINNERCODE* lpSetInnerCode;
SETINNERCMD* lpSetInnerCmd;
SETWAITTIME* lpSetWaitTime;
SETCOMMKEY* lpSetCommKey;
STARTICDMCMD* lpStartICDMCmd;
GETSIZEOFDATA* lpGetSizeOfData;
GETDATA* lpGetData;
GETCMDRESULT* lpGetCmdResult;
ENDICDMCMD* lpEndICDMCmd;
DISCONNECT* lpDisConnect;
CLOSEDEVICE* lpCloseDevice;
SETMYADDRESS* lpSetMyAddress
我想把他转为delphi 定义,该如何做,请高手帮忙。
typedef void* __stdcall (OPENDEVICE)(int nMyAddress, HWND hWnd);
typedef void __stdcall (RECVEDITION)(LPTSTR lpEdition);
typedef BOOL __stdcall (CONNECT)(void* pDevice, LPCTSTR lpCommDef);
typedef void __stdcall (SETADDLOG)(void* pDevice, BOOL bAddLog);
typedef void __stdcall (SETINNERCODE)(void* pDevice, BOOL bBig5);
typedef void __stdcall (SETINNERCMD)(void* pDevice, BOOL bInner);
typedef void __stdcall (SETCOMMKEY)(void* pDevice, LPCTSTR lpCommKey);
typedef void __stdcall (SETWAITTIME)(void* pDevice, DWORD dwWaitTime);
typedef void* __stdcall (STARTICDMCMD)(void* pDevice, int nAddress, int nCommand,
void* pParameters = NULL, int nSizeOfParameter = 0);
typedef int __stdcall (GETSIZEOFDATA)(void* pCommand);
typedef BOOL __stdcall (GETDATA)(void* pCommand, void* pDataBuffer, int nSize);
typedef int __stdcall (GETCMDRESULT)(void* pCommand);
typedef void __stdcall (ENDICDMCMD)(void* pCommand);
typedef BOOL __stdcall (DISCONNECT)(void* pDevice);
typedef void __stdcall (CLOSEDEVICE)(void* pDevice);
typedef void __stdcall (SETMYADDRESS)(void* pDevice, int nAddress); typedef void __stdcall (SENDFRAME)(void* pDevice, LPCTSTR lpSendFrm);
typedef void __stdcall (CLEARRECVSTR)(void* pDevice);
typedef BOOL __stdcall (RECVSTREAM)(void* pDevice, LPTSTR lpRecvStr);
typedef BOOL __stdcall (RECVHDLC)(void* pDevice, LPTSTR lpRecvStr);
SENDFRAME* lpSendFrame;
CLEARRECVSTR* lpClearRecvStr;
RECVSTREAM* lpRecvStream;
RECVHDLC* lpRecvHDLC; OPENDEVICE* lpOpenDevice;
RECVEDITION* lpRecvEdition;
CONNECT* lpConnect;
SETADDLOG* lpSetAddLog;
SETINNERCODE* lpSetInnerCode;
SETINNERCMD* lpSetInnerCmd;
SETWAITTIME* lpSetWaitTime;
SETCOMMKEY* lpSetCommKey;
STARTICDMCMD* lpStartICDMCmd;
GETSIZEOFDATA* lpGetSizeOfData;
GETDATA* lpGetData;
GETCMDRESULT* lpGetCmdResult;
ENDICDMCMD* lpEndICDMCmd;
DISCONNECT* lpDisConnect;
CLOSEDEVICE* lpCloseDevice;
SETMYADDRESS* lpSetMyAddress
解决方案 »
- 异想天开_的想法(程序自助)
- 很奇怪的问题!只要对就给分!
- 请教如何把几个通过select选择出来的数据分别放在不同的控件里
- 录音时, 为什么总显示"音频设备正在使用中",
- Memo问题
- 请问采用sockconnection连接时,为何出现cnot't create new socket 连不上主机?请问采用sockconnection连接时,为何出现cnot't create new
- 大家都快参与呀!“Delphi代码优化技巧”的大汇合!懂多少说多少?
- 是否可以送我一个QQ号, 感谢此大恩
- 为什么老是会出现这个问题啊???
- 请个位大虾一定帮帮忙
- 如何把Delphi编译生成的.exe可执行文件放到别得文件夹?
- 窗体调用问题
OPENDEVICE=function(nMyAddress:integer;AhWnd:HWND):Pointer;stdcall;
RECVEDITION=procedure(lpEdition:LPTSTR );stdcall;
CONNECT=function( pDevice:pointer; lpCommDef:LPCTSTR) :BOOL;stdcall;
SETADDLOG=procedure(pDevice:pointer;bAddLog:BOOL);stdcall;
SETINNERCODE=procedure(pDevice:pointer;bBig5:BOOL);stdcall;
SETINNERCMD=procedure(pDevice:pointer; bInner:BOOL);stdcall;
SETCOMMKEY=procedure(pDevice:pointer; lpCommKey:LPCTSTR );stdcall;
SETWAITTIME=procedure( pDevice:pointer;dwWaitTime:DWORD);stdcall;
STARTICDMCMD=function(pDevice:pointer;nAddress,nCommand:integer;
pParameters:pointer = NiL;nSizeOfParameter:integer = 0):pointer; stdcall;
GETSIZEOFDATA=function(pCommand:pointer):integer;stdcall;
GETDATA=function(pCommand,pDataBuffer:pointer;nSize:integer):BOOL;stdcall;
GETCMDRESULT=function(pCommand:pointer):integer;stdcall;
ENDICDMCMD=procedure( pCommand:pointer); stdcall;
DISCONNECT=function(pDevice:pointer):BOOL; stdcall;
CLOSEDEVICE=procedure(pDevice:pointer); stdcall;
SETMYADDRESS=procedure(pDevice:pointer; nAddress:integer);stdcall; SENDFRAME=procedure(pDevice:pointer; lpSendFrm:LPCTSTR );stdcall;
CLEARRECVSTR=procedure(pDevice:pointer);stdcall;
RECVSTREAM=function(pDevice:pointer; lpRecvStr:LPTSTR ):BOOL;stdcall;
RECVHDLC=function(pDevice:pointer;lpRecvStr:LPTSTR):BOOL; stdcall;
var
lpSendFrame:SENDFRAME;
lpClearRecvStr:CLEARRECVSTR;
lpRecvStream:RECVSTREAM;
lpRecvHDLC:RECVHDLC;
...........
LPCTSTR, 从字面上看好像是一种字符串的长指针, PChar?
DWORD 是否在types 单元?(我在网吧无法查证)
c++是这样调用的 pDllCall->hLibrary = ::LoadLibrary("dll4K.dll");
我在delphi 里面该如何写,调用dll4k.dll.