DeliverResp=record
sMsgID:Array[0..21] of char;
nMsgLevel:Integer;
sServiceID:Array[0..10] of char;
nMsgFormat:Integer;
sSrcTermID:Array[0..21] of char;
nIsReply:Integer;
nMsgLen:Integer;
sMsgContent:Array[0..160] of char;
sDestTermID:Array[0..21] of char;
cTpPid:Char;
cTpUdh:Char;
end;DLPHI的定义
typedef struct
{
char sMsgID[21+1];
int nMsgLevel;
char sServiceID[10+1];
int nMsgFormat;
char sSrcTermID[21+1];
int nIsReply; /* 0/1 */
int nMsgLen;
char sMsgContent[MAX_SM_LEN+1];
char sDestTermID[21+1];
char cTpPid;
char cTpUdhi;
} DeliverResp;C中的定义;
#ifdef _C_COMPILER_
extern "C"
{
#endifint CMPPDeliver(const int nTimeout, DeliverResp *pDeliverResp);#ifdef _C_COMPILER_
}
#endif C的头文件
function CMPPDeliver(nTimeout:Integer;rDeliverResp:PDeliverResp):Integer;cdecl;
DELPHI的声明?可有不妥??
sMsgID:Array[0..21] of char;
nMsgLevel:Integer;
sServiceID:Array[0..10] of char;
nMsgFormat:Integer;
sSrcTermID:Array[0..21] of char;
nIsReply:Integer;
nMsgLen:Integer;
sMsgContent:Array[0..160] of char;
sDestTermID:Array[0..21] of char;
cTpPid:Char;
cTpUdh:Char;
end;DLPHI的定义
typedef struct
{
char sMsgID[21+1];
int nMsgLevel;
char sServiceID[10+1];
int nMsgFormat;
char sSrcTermID[21+1];
int nIsReply; /* 0/1 */
int nMsgLen;
char sMsgContent[MAX_SM_LEN+1];
char sDestTermID[21+1];
char cTpPid;
char cTpUdhi;
} DeliverResp;C中的定义;
#ifdef _C_COMPILER_
extern "C"
{
#endifint CMPPDeliver(const int nTimeout, DeliverResp *pDeliverResp);#ifdef _C_COMPILER_
}
#endif C的头文件
function CMPPDeliver(nTimeout:Integer;rDeliverResp:PDeliverResp):Integer;cdecl;
DELPHI的声明?可有不妥??
解决方案 »
- Delphi遇到错误可以立刻退出吗
- 打开一个Excel并显示在指定显示器上
- 比较有意思的问题:如何获取另外的 Delphi 程序的某个变量的地址
- 请教关于delphi7读取内存中字符串的问题。
- 共享软件想改成免费的,怎么改?
- 如何将16进制的字符串转换成字节型的数组?
- 寻求能兼职或远程工作的Delphi/C#/Win32/.NET高手交流
- 求购<delphi技术手册>电力版
- 紧急求救,关于程序运行后内存占用过多的问题!(打开过多的数据库连接?)
- 想用Delphi6.0和sqlserver 2000开发一个燃料的数据库系统.
- 问:~~~~~~~~~~~~~~~~(5分钟之内结贴!)
- 大家好,我是Delphi新手,如何最大安装delphi7
PDeliverResp=^DeliverResp;但是我用的时候问题可大了,总是内存地址错误;
是cdecl调用约定的,其次就是记录结构的字节对齐问题。
...
end;如果是双字节对齐的,就这样
{$A2}
DeliverResp = record
end;如果是4字节对齐的,就这样
{$A4}
DeliverResp = record
end;如果是8字节...不过,{$A8}对Delphi6、7是默认的,Delphi3,4,5我不知道
...
end;
这样也不可以;
PACKED也不可以,那。
或者试一下把函数原形改成这样:
function CMPPDeliver(ATimeout:Integer; var ADeliverResp: DeliverResp):Integer