C语言做的动态链接库(Trsbp.dll),通过调用相应的函数完成c/s间的数据交换.
内含函数:int TRSbp_cmd(TRS_CMD *trs_cmd,TRS_RESULT *trs_result);
功能简介:执行不同的命令,实现数据上传或下传
主要参数:trs_cmd──命令结构体,trs_result──结果结构体。
返回值:1--成功,0-失败命令结构体TRS_CMD
(1)定义
typedef struct trs_cmd
{
char CmdId;
char CmdLen[4+1];
char *CmdBuf;
}TRS_CMD;
(2)说明
参数 含义 说明
CmdId 命令ID号
CmdLen 命令字节数 字符串表示的4位整形数,不足4位,左侧加‘0’。例如:字节数为8,表示为‘0008’
CmdBuf 命令内容 具体内容根据不同命令格式不一,每个参数之间以‘\t’作为分割符。
结果结构体TRS_RESULT定义
typedef struct trs_result
{
char Status;
char Rows[4+1];
char Cols[4+1];
char ResultLen[8+1];
char *ResultBuf;
}TRS_RESULT;
(2)说明
参数 含义 说明
Status 结果状态 ‘1’表示成功,结果内容中为返回的实际结果。‘0’执行命令过程中有错误发生,结果内容中为返回的错误信息描述。
Rows 结果行数 字符串表示的4位整形数,不足4位,左侧加‘0’。
Cols 结果字段数 字符串表示的4位整形数,不足4位,左侧加‘0’。
ResultLen 结果字节数 仅为结果内容的字节数,不足8位,左侧加‘0’。
ResultBuf 结果内容 返回数据每条记录之间用‘\n’分割,字段之间用‘\t’分割。
请问:用Delphi调用dll文件时,CmdBuf 命令内容 怎么输入呀?
为什么我这样输入的时候运行总是报错呀:
pcmd.Cmdid := '4';
pcmd.cmdlen := '0013';
pcmd.Cmdbuf := '123'+#9+'上午'+#9+'下午';
而当命令ID号为1,命令字节数为0,命令内容为空时:
pcmd.Cmdid := '1';
pcmd.cmdlen := '0000';
pcmd.Cmdbuf := '';
却能够正确运行啊?!
内含函数:int TRSbp_cmd(TRS_CMD *trs_cmd,TRS_RESULT *trs_result);
功能简介:执行不同的命令,实现数据上传或下传
主要参数:trs_cmd──命令结构体,trs_result──结果结构体。
返回值:1--成功,0-失败命令结构体TRS_CMD
(1)定义
typedef struct trs_cmd
{
char CmdId;
char CmdLen[4+1];
char *CmdBuf;
}TRS_CMD;
(2)说明
参数 含义 说明
CmdId 命令ID号
CmdLen 命令字节数 字符串表示的4位整形数,不足4位,左侧加‘0’。例如:字节数为8,表示为‘0008’
CmdBuf 命令内容 具体内容根据不同命令格式不一,每个参数之间以‘\t’作为分割符。
结果结构体TRS_RESULT定义
typedef struct trs_result
{
char Status;
char Rows[4+1];
char Cols[4+1];
char ResultLen[8+1];
char *ResultBuf;
}TRS_RESULT;
(2)说明
参数 含义 说明
Status 结果状态 ‘1’表示成功,结果内容中为返回的实际结果。‘0’执行命令过程中有错误发生,结果内容中为返回的错误信息描述。
Rows 结果行数 字符串表示的4位整形数,不足4位,左侧加‘0’。
Cols 结果字段数 字符串表示的4位整形数,不足4位,左侧加‘0’。
ResultLen 结果字节数 仅为结果内容的字节数,不足8位,左侧加‘0’。
ResultBuf 结果内容 返回数据每条记录之间用‘\n’分割,字段之间用‘\t’分割。
请问:用Delphi调用dll文件时,CmdBuf 命令内容 怎么输入呀?
为什么我这样输入的时候运行总是报错呀:
pcmd.Cmdid := '4';
pcmd.cmdlen := '0013';
pcmd.Cmdbuf := '123'+#9+'上午'+#9+'下午';
而当命令ID号为1,命令字节数为0,命令内容为空时:
pcmd.Cmdid := '1';
pcmd.cmdlen := '0000';
pcmd.Cmdbuf := '';
却能够正确运行啊?!
解决方案 »
- 使用Delphi控制Excel的公式编辑器
- 如何判断某个form是否已经create?
- 关于Storedproc的问题,请大家照顾照顾新来的!!:)
- 用Table组件通过BDE访问SQL SERER 2000出错
- ★★★★★菜鸟提问: 如何动态的创建TTabSheet,并且该TabSheet能够预先在design time先设计好?
- ADOQuery在窗体关闭时是否必须close?
- 帮帮帮帮帮帮帮帮帮帮个忙,Delphi6带的installshield的问题。
- 2000上编译好的,移到98第二版就不行了??(明天就得给客户了,大侠们!!!)
- 请大富翁论坛的地址, 已经有人告诉我是www.delphibbs.com,但是不行
- socket编程问题
- 在intraweb窗口上使用ado控件的疑问
- 在处理业务的时候,大家一般都写几层函数啊?欢迎大家讨论一下!
char *ResultBuf
你的:
pcmd.Cmdbuf := '123'+#9+'上午'+#9+'下午';
在分配内存之前就强行符值的问题你的TRS_RESULT在D中怎么定义的?
TRS_CMD = record
Cmdid : Char;
cmdlen: array[0..3] of char;
Cmdbuf: array[0..200] of Char;
end;
prs_result = ^Trs_result;
Trs_result = record
status : Char;
rows : array[0..4] of Char;
cols : array[0..4] of char;
ResultLen: array[0..8] of char;
resultBuf: PChar;
end;
prs_Cmd = ^TRS_CMD;
TRS_CMD = record
Cmdid : Char;
cmdlen: array[0..3] of char;
Cmdbuf: pChar;
end;
prs_result = ^Trs_result;
Trs_result = record
status : Char;
rows : array[0..4] of Char;
cols : array[0..4] of char;
ResultLen: array[0..8] of char;
resultBuf: PChar;
end;
var
Cmdbuf:array[0..200] of char;
resultBuf:array[0..200] of char;声明变量rs_Cmd,rs_result
rs_cmd.Cmdbuf:=@CmdBuf
rs_result.ResultBuf:=@ResultBuf pcmd.Cmdid := '4';
pcmd.cmdlen := '0013';
StrCpy(pcmd.Cmdbuf , '123'+#9+'上午'+#9+'下午');