很久没有提问了,关于c++的DLL在delphi中调用的问题

lwk_hlj 2006-03-03 07:50:34
调用某一数据库提供的api进行开发,中有一function,c/c++定义如下:
C format
int32 pipt_tag(
int32 pt,
char PIPTR * tag,
int32 len );
Returns
>0
System error
0
Success
-1
Point does not exist


Arguments

pt (passed)

Point number

tagname (returned)

Tagname buffer

len (passed)

Length of the passed tagname buffer

其中,PIPTR定义如下:

#define PIPTR _far
#define PIPROC WINAPI /* WINAPI = far pascal */
#elif (defined(WIN32) || defined(_WIN32))
#include <windows.h> /* WINAPI definition */
#define PIPTR
#define PIPROC WINAPI /* WINAPI = _stdcall */
#else
#define PIPTR
#define PIPROC
#endif


我在delphi中定义如下


int32=longint;
TDynamicInt32Array = array of int32;
TDynamicSingleArray = array of Single;
TDynamicCharArray=array of char;

function pipt_tag(pt:int32;tag:TDynamicCharArray;Len:int32):int32;stdcall ;external 'piapi32.dll';


调用的时候,

setlength(tagname,0);
setlength(tagname,40);
ir:=pipt_tag(688,tagname,40);


为何只能返回tagname的前12位?不知道为何?

那位帮帮我!
...全文
108 点赞 收藏 3
写回复
3 条回复
lwk_hlj 2006年07月07日
你回答也是不对的,这个函数返回的长度有限!
回复 点赞
getit911 2006年03月03日
这样调用试试
ir:=pipt_tag(688,tagname[0],40);
回复 点赞
发动态
发帖子
非技术区
创建于2007-08-02

588

社区成员

5.4w+

社区内容

Delphi 非技术区
社区公告
暂无公告