请教c++格式的函数接口如何翻译到delphi
hslzf 2003-04-03 12:14:18 ...
#ifndef PIPTR
#if (defined(_WINDOWS) || defined(DOS)) && !defined(WIN32)
#define PIPTR _far
#else
#define PIPTR
#endif
#endif
#if defined(_WINDOWS) || defined(WIN32)
#include <windows.h>
#define PIINT32 int32 WINAPI
#define PIVOID void WINAPI
#define PIWIN WINAPI
#define PIBOOL pibool WINAPI
#elif defined ( __alpha )
#define PIINT32 int
#define PIVOID void
#define PIWIN
#define PIBOOL pibool
#else
#define PIINT32 int32
#define PIVOID void
#define PIWIN
#define PIBOOL pibool
#endif
...
PIINT32 piut_connect( const char PIPTR *procname );
PIINT32 piut_disconnect( void );
PIINT32 piut_login( const char PIPTR *, const char PIPTR *, int32 PIPTR * );
PIINT32 pipt_findpoint( char PIPTR *tagname, int32 PIPTR *pt );
...
上面是c++源代码的一部分,用于调用piapi32.dll
下面是vb中的正确形式:
Declare Function piut_connect Lib "piapi32.dll" (ByVal ProcName$) As Long
Declare Function piut_disconnect Lib "piapi32.dll" () As Long
Declare Function piut_login Lib "piapi32.dll" (ByVal username$, ByVal password$, valid&) As Long
Declare Function pipt_findpoint Lib "piapi32.dll" (ByVal TagName$, pt&) As Long
现在我想用delphi重写一遍,以便我在delphi中写函数,但是有几点我看不懂:
1.“const char PIPTR *procname”翻译成delphi是什么意思?尤其是这里的piptr不明白;
2.如何翻译按值调用和按地址调用?
3.vb中的pipt_findpoint函数的tagname参数是传值调用,而c++中好像是传地址,却都能正确调用,而在delphi中却不行,为什么
谢谢,如果可能的话,请帮忙把上面的四个函数翻译过来