很久没有提问了,关于c++的DLL在delphi中调用的问题
调用某一数据库提供的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位?不知道为何?
那位帮帮我!
问题点数:200、回复次数:2Top
1 楼getit911(Windows转Linux中)回复于 2006-03-03 20:27:26 得分 200
这样调用试试
ir:=pipt_tag(688,tagname[0],40);Top
2 楼lwk_hlj(阿凯(学习oralce中))回复于 2006-07-07 21:05:30 得分 0
你回答也是不对的,这个函数返回的长度有限!Top




