很久没有提问了,关于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位?不知道为何?

那位帮帮我!
...全文
197 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lwk_hlj 2006-07-07
  • 打赏
  • 举报
回复
你回答也是不对的,这个函数返回的长度有限!
getit911 2006-03-03
  • 打赏
  • 举报
回复
这样调用试试
ir:=pipt_tag(688,tagname[0],40);

830

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧